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

环境:

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.log
160206 14:53:26  mysqld started
160206 14:53:26  mysqld ended

160214 15:05:46  mysqld started
160214 15:05:47  mysqld ended

160214 15:09:17  mysqld started
160214 15:09:17  mysqld ended

160214 16:58:45  mysqld started
160214 16:58:45  mysqld ended

160214 16:59:55  mysqld started
160214 16:59:55  mysqld ended

160214 16:59:59  mysqld started
160214 16:59:59  mysqld ended
没什么有用的信息。

查看/var/log/messages

[root@localhost ~]# cat  /var/log/messages | grep mysql
Feb 14 15:05:46 localhost kernel: mysqladmin[21917]: segfault at 0000000000000000 rip 0000003000a607b7 rsp 00007ffff67d0f58 error 4
Feb 14 15:05:46 localhost kernel: mysqladmin[21928]: segfault at 0000000000000000 rip 0000003000a607b7 rsp 00007fff25e70ca8 error 4
Feb 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值