mysql断电后启动失败数据库表损坏解决

测试环境机器断电后重启机器发现mysql启动失败,查看mysqld的日志发现

按照日志文件中的参考文档地址,在配置文件my.cnf中添加了innodb_force_recovery=1,重新启动mysql,发现还是不行,日志中报错如下:

出现这种情况首先想到的是表损坏了,要先备份数据,于是强制启动mysql,使用mysqld_safe命令,在配置文件中添加skip_grant_tablesmysqld_safe --user=mysql,  确认mysql启动后,去检查哪些表被损坏了:mysqlcheck -C -uroot -p -A,跑完后检查日志中新增的记录,根据日志可以找到被损坏的表,由于表过多损坏,所以重新初始化个mysql数据目录,在这之前先把所有的数据备份下:

mysqldump -uroot -p -A >/var/lib/dump.sql

初始化新的mysql数据路径:

mkdir /var/lib/mysql_new

chown -R mysql:mysql  /var/lib/mysql_new

修改my.cnf中的datadir=/var/lib/mysql_new,注释掉skip_grant_tables和innodb_force_recovery

最后mysqld --initialize --basedir=XX --datadir=/var/lib/mysql_new,执行完后查看新的数据目录下的文件,mysql系统文件都有了,这个时候停止mysqld_safe进程: pkill mysql

正常启动mysql,service mysqld start ,换完数据目录后一般会出现 不能通过 /var/lib/mysql/mysq.sock去连接mysql的错误提示,这个时候建个软连接:

ln -s /var/lib/mysql_new/mysql.sock  /var/lib/mysql/mysq.sock即可,service mysqld start可以正常启动mysql了,

mysql -uroot -p两次回车,等候后第一件事就是修改root密码,否则操作的时候也会提示强制去设置,

>alter user root@'localhost' identified by 'passoword'\G;

>flush privileges\G;

>source /var/lib/dump.sql (执行完后数据就全部恢复了)

>exit; 退出后就可以用原来数据库的用户名密码正常连接了

到此完全恢复数据库中的表和数据,停掉数据库,可以吧数据的目录名相应的改成原来的

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值