记一次mysql无法启动故障恢复和备份规划

本文记录了一次因服务器重启导致mysql无法启动的故障恢复过程,详细描述了问题定位、解决步骤以及后续的备份规划。故障期间线上服务停机4小时,提醒我们重视数据库备份和应急预案的重要性。解决方案包括设置innodb_force_recovery启动mysql进行数据备份,重新部署并恢复服务。为避免类似问题,提出了定期全量与增量备份、完善应急预案、考虑使用云服务以及提升数据库维护的专业性等策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一次深刻的教训(阿里云自建mysql,centos6.9,mysql5.6),没有对数据库备份足够的重视,升级服务没有做应急预案,导致线上环境停机4小时维护。

一、事情经过:

1、应用需要升级,

2、阿里云提示系统有漏洞需要打补丁,需要重启服务器

3、停了应用服务,没有手工停mysql服务,重启服务器

4、部署好应用,发现mysql连接异常,一脸懵逼。

提示:Cannot connect to local MYSQL server through socket '/var/lib/mysql/mysql.sock'

找不到mysql.sock,通过网上搜索也没找到原因,

执行 service mysqld restart;提示stop成功,start failed。

执行service mysqld status,提示mysql dead but subsys locked

一时间定位不到问题,查看错误日志。

二、通过请教高人,解决问题的步骤:

1、应该是表中有错误的数据导致启动失败,此时mysql -uroot -P已经连接不到mysql,通过修改/ect/my.cnf 增加一行innodb_force_recovery=2,强制启动mysql,完成数据备份。

2、此时该出错的表还是操作不了,通过navicat导出除此表之外的其他数据,庆幸这张表还只是暂时的日志文件,还没太大的意义。

3、mysqldump到错误表处就结束了。

4、新建一个数据库实例,数据导入,新建出错的表,启动服务恢复生产应用。

 

到此,离停服务器已经过去4个小时,仿佛经历了一场大劫难,以长时间停止线上服务和丢失数据的风险为代价,这个教训实在太大了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值