MySql版本为8.0.16,笔记本电池一天比如一天,这两天都是用到忽然断电关机,今天跑程序发现连不上MySql了,去服务里启动,也是一启动就挂掉,看日志才发现问题,文件损坏了,看日志记录里说官方建议使用 innodb_force_recovery参数去强制恢复一下,如果用不超过4的选项值来恢复你的表,那么是比较安全的,只有一些在损坏的单独页面上的数据会丢失。如果为6的话可能出点问题,因为数据库页被留在一个陈旧的状态,这个状态反过来可以引发对B 树和其它数据库结构的更多破坏。
解决方案我在网上查阅了大概就下面三种,我用的第3种,重新初始化mysql然后导入之前的数据
1.删除data目录的ib_logfile0,ib_logfile1,ib_logfile_XXXX这些日志文件,然后重启mysql服务,但是我这里不行.
2.innodb_force_recovery参数设置后(设置为=6),重启mysql服务,然后my.ini再把这个参数去掉,重启服务,我这也不行.....
3. (1)拿之前的数据库备份来恢复,新建个data目录,重新执行mysqld --initialize命令(数据库初始密码会记录在日志中),然后连接数据库,导入数据。(2)执行mysqldump -u用户名 -p密码 -A > database.sql 命令导出所有数据,然后和(1)步骤一样,执行initialize。
initialize后,查看日志中的初始密码,然后修改密码,mysql -uroot -p连接上mysql后执行
alter user root@'localhost'