记录一个Mysql服务kill后重启失败的解决方法

问题描述

起因是要通过Canal把数据从Mysql同步到其他地方。然后在实施时,发现生产环境Mysql的binlog并没有打开。修改my.cnf配置后,进行Mysql restart一直失败,报错是ibdata1文件无法进行Lock,试过网上各种方法还是无法重启Mysql(确实能通过cp -a方式解除锁定,但是后续还有很多其他数据文件无法进行Lock),Stop Mysql服务也是同样因为这个原因失败。

最终决定冒险赌一把(毕竟数据文件还在,还有恢复的方案)。直接kill Mysql,然后就再也启动不了mysql服务了。(╯‵□′)╯︵┻━┻。

启动失败的报错,明确的ERROR信息只有Too many arguments

但是哪怕把启动参数修改的只剩下基础的几个baseDir,dataDir等也无法启动。(估计真实的报错原因并没有在日志里显示出来)


解决方案:

注:不一定针对你的场景有效,本人遇到的是data文件完全没有损坏的情况,请谨慎决定是否尝试这种方式。

在机器上重新下载部署一个和无法启动mysql版本相同的mysql(本人采用tar.gz解压的方式),在执行mysql初始化的时候,例:

mysqld --initialize --user=mysql --basedir=/soft/mysql --datadir=/soft/mysql/data

dataDir先指向空文件夹,baseDir指向当前安装mysql的目录(就如第一次安装mysql的步骤)。

等初始化结束后,先尝试启动,正常启动后,再关闭当前mysql服务。

修改配置文件(Linux下默认是/etc/my.cnf)中的dataDirbaseDir指向无法启动的mysql目录原本使用的路径,lock文件不要指向原先的路径。配置完成后,再次启动即可,什么都跟原来的一样。 

最后,kill掉数据库真的很危险,能restart就不要乱kill,如果没有准备好kill后出现故障的恢复方案,不要像我一样作死呀。在kill前,尽可能先备份数据。 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值