mysql启动故障(简写)

By | 11月11日
Advertisement

问题描述和思路

下午做svn钩子文档时,开发大哥跑来,说mysql启动报错,半个小时没找到解决的办法,报错内容为:StartingMySQL. ERROR! The server quit without updating PID file

根据大哥的描述,马上想到可能是mysql高速运行下,做大量数据查询时候,卡的时候,强制杀掉mysql数据库,由于主主模式不是很熟悉,判断是两边数据写入不一样,导致起不来,马上想到单个服务器启动,进入127服务器,打开my.cnf文件,server-id注销,启动还是报错,查看日志,也是提示找不到pid文件,进入相关目录/var/run/mysqld/mysqld.pid,发现根本没有,在数据库配置文件中指定mysql.pid文件还是报错,可能大致分析出强制杀掉进程导致数据结构出现问题,mysqld_safe --user=mysql &安全模式进入,但是还是报错,由于不熟悉公司整体架构,这时已经有点绝望,大哥过来说先找到备份问题,然后考虑重新初始化,但是mysql是yum安装,没有install_db初始化命令。这时候,沈哥找到了备份数据,上月的全备,根据相应的脚本也找到相应的增量备份。

问题事后回顾

启动mysql服务时出现如下错误,可查看错误日志找出错误原因。

Error:Starting MySQL.The server quitwithout updating PID file (/data/mysql/failed184_sles10.pid).

Error:

13073010:15:37 [ERROR] COLLATION 'utf8_general_ci' is not valid for CHARACTER SET'latin1'

13073010:15:37 [ERROR] Aborting

若错误日志中出现如上错误,则是在编译的时候字符集与校对集没有对应。校对集时utf8_general_ci,而字符集是latin1。

解决方法:在配置文件my.cnf 中的[mysqld]下面加上 -DDEFAULT_CHARSET=utf8;-DDEFAULT_COLLATION=utf8_general_ci 这两条语句。“utf8”和“utf8_general_ci ”可改成相应的字符集合校对集。修改完后看能否启动成功,若是出现同样的问题,那没办法只能从头编译再装了。

Error:

13073014:46:20 [ERROR] Plugin 'InnoDB' init function returned error.

13073014:46:20 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

13073014:46:20 [ERROR] Unknown/unsupported storage engine: InnoDB

13073014:46:20 [ERROR] Aborting

出现如上错误可能是innodb在启动时出了问题。

解决方法:在配置文件里面写上 [mysqld]skip-innodb 或者在data目录下将文件ib_logfile0、ib_logfile1删除即可

CMake Error: The source directory"/data/cheriegong" does not appear to contain CMakeLists.txt.

若编译时出现以上错误,需要把预编译里面的MYSQL_USER去掉,即可预编译成功!

mysql编译准备

综合评估后决定重新编译mysql,版本选择,想了很久,决定用已经稳定,相应网上有很多资料来源的5.5版本mysql,编译的过程如下

开始用cmake2.8.8.tar.gz,

# tar xfcmake-2.8.8.tar.gz

# cdcmake-2.8.8

# ./bootstrap

# make

# make install

cmake 官方说明

cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译。

编译mysql提示cmake安装不对,MD5校对mysql,发现不对,果断卸载,yum安装

yum –y install cmake

然后rz上传mysql-5.5.28.tar.gz到跳板机,然后scp推送到127数据库(考虑是现在一台数据库服务器上先重新编译,如果不对,至少还有一台mysql没有动过,可能恢复一些默认值,保险一些)。

cmake的编译不同于make编译方式,用cmake获取帮组

./configure cmake . 编译方式

./configure --help cmake . -LH or ccmake . 获取编译参数的帮组命令

编译安装mysql

mysql 5.5不同于5.6,需要在编译的时候指定默认是inodb数据库引擎,5.6之后就是默认的,但是5.1是不支持inodb,但是5.5.28修复了以前大量的bug,稳定而且资料好找。

编译帮组

指定安装文件的安装路径时常用的选项:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql

-DMYSQL_DATADIR=/data/mysql

-DSYSCONFDIR=/etc

默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:

-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

-DWITH_FEDERATED_STORAGE_ENGINE=1

若要明确指定不编译某存储引擎,可以使用类似如下的选项:

-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1

比如:

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1

-DWITHOUT_FEDERATED_STORAGE_ENGINE=1

-DWITHOUT_PARTITION_STORAGE_ENGINE=1

如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:

-DWITH_READLINE=1

-DWITH_SSL=system

-DWITH_ZLIB=system

-DWITH_LIBWRAP=0

其它常用的选项:

-DMYSQL_TCP_PORT=3306

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock

-DENABLED_LOCAL_INFILE=1

-DEXTRA_CHARSETS=all

-DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8_general_ci

-DWITH_DEBUG=0

-DENABLE_PROFILING=1

编译安装

# groupadd -r mysql

# useradd -g mysql -r –s /sbin/nologinmysql

# tar xf mysql-5.5.28.tar.gz

# cd mysql-5.5.28

# cmake . -DCMAKE_INSTALL_PREFIX=/opt/mysql\ 指定安装目录

-DMYSQL_DATADIR=/data/mysqldb \ 指定数据库存放目录

-DSYSCONFDIR=/etc \ 指定配置文件

-DWITH_INNOBASE_STORAGE_ENGINE=1\ 编译indodb引擎进mysql,其实默认

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ 编译ARCHIVE引擎,其实默认编译也有

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ 编译黑洞引擎,做mysql结构可能用到

-DWITH_SSL=system\ 支持ssl

-DWITH_ZLIB=system\ 支持zlib

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock\ 指定mysql客户端sock文件

-DDEFAULT_CHARSET=utf8\ 指定默认字符集为utf8

-DDEFAULT_COLLATION=utf8_general_ci 指定默认数据库字符

报错:

Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)

CMake Error at cmake/readlineNaNake:82(MESSAGE):

Curses library not found. Please install appropriate package,

-- Configuring incomplete, errors occurred!

yum -y install ncurses-devel

rm CMakeCache.txt 删除编译文件,再次编译再次报错

Warning:Bison executable not found in PATH

yum –y install bison

-- The C compiler identification is unknown

-- The CXX compiler identification is unknown

提示没有gcc编译

yum –y install gcc gcc-c++

再次编译提示OK

需要yum –yinstall bison gcc gcc-c++ ncurses-devel

make && makeinstall

配置mysql主从

原来备份的my.cnf用于新编译的,把/opt下面的mysql.server拷贝到/etc/init.d目录下面,启动mysql,配置my.cnf,作为主库

server_id = 1 主库的id值为1

log_bin = /data/mysql5.5binlog/mysql-binlog 开启binlog日志

max_binlog_size = 512M binlog最大为多少后,就自动更新

read-only = 1 表示可写,0为只读

初始化mysql数据库

/opt/mysql/scripts/mysql_install_db--user=mysql --basedir=/opt/mysql --datadir=/data/mysqldb

报错(心都凉了)

[ERROR] COLLATION 'latin1_swedish_ci' isnot valid for CHARACTER SET

马上想到51cto一篇博文提到过类似

解决:

在my.cnf文件中加入一行

character-set-server=latin1

重新初始化OK

启动mysql

登录设置相应的权限

创建mysql同步的用户slaveyimi,设置为只能从库ip权限

做好相应准备,开始配置主从同步

主库操作

主库,锁表备份所有所有库,备份完之后,就unlock tables;解锁表

一定不要--all-database (会备份数据库结构)mysqldump -uroot -p amc|gzip > /backup/mysql/$(date+%F)-amc.sql.gz

mysqldump -uroot -p adhulu|gzip >/backup/mysql/$(date +%F)-adhulu.sql.gz

把sql.gz文件推送到从库那台服务器,从库的mysql编译安装略

注意:从库做完相应的配置,一定要重启,我捣鼓半天原来是没重启,主从老是不对

导入全备数据

mysql -uroot -p'密码' <full.sql

登录数据库,执行下面命令

CHANGE MASTER TO

MASTER_HOST='10.163.2.127', 主库ip地址

MASTER_PORT=3306, 主库端口

MASTER_USER='slaveyimi', 主从同步用户

MASTER_PASSWORD='password', 用户密码

MASTER_LOG_FILE='mysql-binlog.000004', binlog最新文件名称

MASTER_LOG_POS=108502907; 偏移值(查看showmaster status\G;获取得到)

开启同步,slave start,不同版本不一样,也可能是start slave;

在从库上查看是否同步

show slave status\G;

下面表示同步成功

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Seconds_Behind_Master: 0

限制从库写入方法

在从库的my.cnf的配置文件加入read-only

read-only = 1

而且在给从库的用户授权时候,一定不要给all权限,read-only对all权限的用户没有用

授权主库只给insert,update,delete,select权限即可

grant select,insert,update,delete on'adhulu'.* to 'adhulu'@'%' identified by 'XXX';

授权主库只给select权限即可

grant select on adhulu.* to 'adhulu'@'%'identified by 'XXX';

平时禁止任何人登录从库操作。

本文出自 “三人行,必有我师焉” 博客,请务必保留此出处

Similar Posts:

  • MySQL Study之--Mysql启动失败“mysql.host”

    MySQL Study之--Mysql启动失败"mysql.host" 系统环境: 操作系统:RedHat EL55 DB Soft: Mysql 5.6.4-m7 通过源码包安装mysql后,在启动mysqld时出现错误: [[email protected] mysql]# bin/mysqld_safe & [1] 15846 [[email protected] mysql]# 150610 17:04:36 mysqld_safe Logging to '/usr/local/mysql/data/

  • Oracle Study之--Oracle 11gR2 RAC crs启动故障

    Oracle Study之--Oracle 11gR2 RAC crs启动故障 系统环境: 操作系统:RedHat EL5 Cluster: Oracle 11gR2 Grid Oracle: Oracle 11gR2 RAC环境中,其中一个节点crsd进程启动失败: [[email protected] ~]$ crsctl check crs CRS-4638: Oracle High Availability Services is online CRS-4535: Cannot communicat

  • mysql 启动、重启、kill脚本

    mysql 启动.重启.kill脚本 vi mysql #!/bin/sh mysql_port=3306 mysql_username="root" mysql_password="" start_mysql() { printf "Starting MySQL...\n" /bin/sh /data1/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf 2>&1 > /dev

  • mysql启动问题---pid

    朋友帮忙让我搞mysql的一个问题,报错如下 看配置文件,也没什么错误.而且之前使用一直好好的. 显示space空间不足 df -h 查看 确实,满了 让朋友释放些磁盘空间,mysql启动正常了 本文出自 "眼下的幸福" 博客,请务必保留此出处

  • 计算机常见的10种启动故障解决方法

    各位网管们肯定遇到过客户机无法正常启动的现象,本文教大家如何解决一些常见的开机启动故障. 开机自检时出现问题后会出现各种各样的英文短句,短句中包含了非常重要的信息,读懂这些信息可以自己解决一些小问题,可是这些英文难倒了一部分朋友,下面是一些常见的BIOS短句的解释,大家可以参考一下. 1.CMOS battery failed 中文:CMOS电池失效. 解释:这说明CMOS电池已经快没电了,只要更换新的电池即可. 2.CMOS check sum error-Defaults loaded 中文

  • (zz)skip-grant-tables:非常有用的mysql启动参数

    介绍一个非常有用的mysql启动参数-- --skip-grant-tables.顾名思义,就是在启动mysql时不启动grant-tables,授权表.有什么用呢?当然是忘记管理员密码后有用. 操作方法: 1.杀掉原来进行着的mysql: rcmysqld stop 或者: service mysqld stop 或者: kill -TERM mysqld 2.以命令行参数启动mysql: /usr/bin/mysqld_safe --skip-grant-tables & 3.修改管理员密码

  • Windows XP启动过程及常见启动故障

    一.Windows XP系统在磁盘上的组织 安装XP过程中,Windows安装系统会在计算机的磁盘分区写入引导相关的组件,分别置放于系统卷(system volume)启动卷(boot volume). 一个硬盘一般有两种分区方式:一是四个主分区,每个分区都可以作为活动分区:二是三个主分区和一个扩展分区,扩展分区中以逻辑链方式组织逻辑分区,逻辑分区数不受限制.Windows的系统卷只能是主分区,启动卷则没有此限制,主分区或逻辑分区均可. Windows安装程序会选择磁盘上第一个可引导的主分区(即

  • 教你几招Windows XP无法启动故障的排除方法

    教你几招Windows XP无法启动故障的排除方法

  • Win7常见启动故障产生的原因及解决方法整理

    Win7系统由于安装某些特殊软件或误操作还是会出现各种启动故障,下面与大家分享下Win7常见启动故障产生的原因以及如何解决相关启动故障,感兴趣的朋友可以参考下 相信绝大多数朋友都用上了Win7系统了吧,Win7系统虽然比以前其他版本的Windows系统都稳定得多,但是由于安装某些特殊软件或误操作,系统还是会出现各种启动故障.接下来,笔者就来给大家分析一下Win7常见启动故障产生的原因以及如何解决相关启动故障. 故障1:MBR故障 故障表现:开机后出现类似"press F11 start to s

  • linux下mysql启动与关闭

    ################################################################## linux mysql 启动与停止 ################################################################## show variables like 'character_set_%' //察看当前系统字符集 SHOW VARIABLES LIKE 'collation_%'; /etc/rc.d/ini

Tags: