mysql报错Cannot check for MySQL Daemon startup because of mysqladmin failure

来源:互联网 发布:ubuntu添加软件源 编辑:程序博客网 时间:2024/04/25 03:39

环境:

CentOS 5.11      mysql-server:5.0.95

mysql之前的存储路径是/var/lib/mysql,最近由于数据量不断增加,根目录已经满了,正好服务器上刚挂载了一块200G的空硬盘,于是就想把mysql的存储路径切换到新硬盘上。但是将数据拷贝到新硬盘后,修改了/etc/my.cnf的datadir和socket路径后,启动服务service mysqld restart后报错:

Cannot check for MySQL Daemon startup because of mysqladmin failure
在确认了不是数据文件权限引起的问题后,尝试从log入手分析问题。

查看mysql日志文件 /var/log/mysqld.log

[root@localhost ~]# cat /var/log/mysqld.log160206 14:53:26  mysqld started160206 14:53:26  mysqld ended160214 15:05:46  mysqld started160214 15:05:47  mysqld ended160214 15:09:17  mysqld started160214 15:09:17  mysqld ended160214 16:58:45  mysqld started160214 16:58:45  mysqld ended160214 16:59:55  mysqld started160214 16:59:55  mysqld ended160214 16:59:59  mysqld started160214 16:59:59  mysqld ended
没什么有用的信息。

查看/var/log/messages

[root@localhost ~]# cat  /var/log/messages | grep mysqlFeb 14 15:05:46 localhost kernel: mysqladmin[21917]: segfault at 0000000000000000 rip 0000003000a607b7 rsp 00007ffff67d0f58 error 4Feb 14 15:05:46 localhost kernel: mysqladmin[21928]: segfault at 0000000000000000 rip 0000003000a607b7 rsp 00007fff25e70ca8 error 4Feb 14 15:05:47 localhost kernel: mysqld[22005]: segfault at 0000000000000000 rip 0000003000a607b7 rsp 00007fff6f3e7868 error 4
发现报了好多这种类似的错误。
基本上可以判定为是mysql 程序出了问题,尝试过只是通过yum remove和yum instll卸载重装数据库,但是仍然存在这个问题。最后选择备份出必要数据文件后,彻底删除mysql后进行重装。


mysql的数据备份和彻底删除:

mysql常用innodb和myisam引擎,因此备份主要是针对这两种引擎的数据文件。查看/var/lib/mysql下的数据文件,每个文件夹代表的是一个数据库的数据目录,如果数据目录里有.frm,.myd,.myi三种文件,则是myisam引擎的,只需要将整个数据目录拷贝出来即可。如果数据目录里只有.frm和.db文件,则是innodb引擎,需要在拷贝数据目录的同时,将/var/lib/mysql下的ibdata1也一起拷贝出来。

我是直接将整个/var/lib/mysql拷贝到了别处。

拷贝时有一个小技巧,使用

cp -rp /var/lib/mysql 目标路径


带着p参数,就可以将文件的所有者机用户组属性一起拷贝。(mysql数据库文件的所有者和用户组都必须是mysql,也可以使用chown -R 进行修改)

到此文件备份完成,接下来需要彻底删除mysql。

卸载mysql:

[root@localhost ~]# rpm -qa|grep mysql mysql-5.5.25-1.el6.remi.i686 mysql-libs-5.5.25-1.el6.remi.i686 compat-mysql51-5.1.54-1.el6.remi.i686 mysql-server-5.5.25-1.el6.remi.i686 [root@localhost ~]# yum remove mysql mysql-server mysql-libs compat-mysql51

同时要注意手动删除/etc/my.cnf和/var/lib/mysql


接下来就可以重新安装mysql。安装教程

使用yum重装完成后,启动mysql,配置root的密码。

之后可以将之前备份的数据重新拷贝到新数据库的/var/lib/mysql下(包含ibdata1,,ib_logfile0,ib_logfile1,执行的是替换操作),注意不要拷贝原数据库存储用户数据的mysql目录。(注1)重启mysql,就能正常访问数据库了。


注1:补充于20161122

今天在解决同样的数据库报错的问题时,由于原始的数据库文件存放路径是在挂载硬盘上,在mysql重装完成后,配置/etc/my.cnf中的datadir为挂载硬盘中的数据库目录,发现数据库运行正常,因此保留原始的mysql目录应该也是可以的。


参考:

http://blog.aizhet.com/Linux/9081.html

mysql安装教程

0 0
原创粉丝点击