电脑由于断电或其他原因死机,重新启动后,电脑里面的mysql服务无法正常启动,报数据不一致或者表空间列法找到等错误。此种情况下,通过如下步骤可正常恢复,亲测可用,环境为macOS, mysql5.7, InnoDB。
1. 修改mysql配置文件my.cnf,增加innodb_force_recovery = 5.
2. 试着启动mysql服务,若不能启动可将innodb_force_recovery的值设置为6,再试一下。mysql若能正常启动,则可采用此方案,否则需要采用其他办法。此种办法启动后的mysql属于只读模式,不能写入数据。
3. 使用mysqldump命令备份数据库,此命令可将实例中的所有数据库均备份:mysqldump -uroot -pxxx --all-databases > all.sql
4. 停止数据库,删除data目录(删除前最好备份,以防万一),使用mysqld --initialize命令重新初始化数据库。此命令运行成功后,控制台上会打出预设的root用户密码,需要记下此密码,后面登陆后需要先修改密码,才可以进行其他操作。
5. 删除my.cnf中的innodb_force_recovery参数,重新启动数据库,然后在命令行使用mysql -uroot -p,输入上步中得到密码登录数据。
6. 使用下述命令修改密码:
SET PASSWORD = PASSWORD('你的新密码');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
7. 恢复之前通过mysqldump备份的数据,执行mysql -uroot -p < all.sql
然后再登录数据库就可看到发生故障时的数据了,数据库恢复正常。
网友评论