一、报错信息
启动日志如下:
看日志的大体的意思是数据页的损坏。
二、解决方案
2.1 修改配置
/etc/my.cnf 配置文件修改innodb 启动参数修改
[mysqld]
innodb_force_recovery = 1
如果innodb_force_recovery = 1不生效,则可尝试2-6几个数字。
然后重启mysql,重启成功。然后使用mysqldump或 pma 导出数据,执行修复操作等。修复完成后,把该参数注释掉,还原默认值0。
innodb_force_recovery影响整个InnoDB存储引擎的恢复状况。默认为0,表示当需要恢复时执行所有的恢复操作(即校验数据页/purge undo/insert buffer merge/rolling back&forward),当不能进行有效的恢复操作时,mysql有可能无法启动,并记录错误日志;
innodb_force_recovery可以设置为1-6,大的数字包含前面所有数字的影响。当设置参数值大于0后,可以对表进行select,create,drop操作,但insert,update或者delete这类操作是不允许的。
2.2导出数据脚本
### 数据库导出
mysqldump -uroot -pwinner -A -B --force > ipvacloud20220929.sql
注意:这里的数据一定要备份成功。然后删除原数据库中的数据。
2.3 删除ib_logfile0、ib_logfile1、ibdata1
备份MySQL数据目录下的ib_logfile0、ib_logfile1、ibdata1三个文件,然后将这三个文件删除,还删除了此数据库文件夹下的 .ibd结尾的文件。
2.4 配置my.cnf
将my.cnf中innodb_force_recovery = 1或2——6几个数字这行配置删除或者配置为innodb_force_recovery = 0 重启MySQL服务
2.5 将数据导入MySQL数据库
mysql -uroot -pwinner repair_azkaban < ipvacloud20220929.sql ;
此种方法下要注意的问题:
ib_logfile0、ib_logfile1、ibdata1这三个文件一定要先备份后删除;
一定要确认原数据导出成功了,最后导入 成功 恢复了数据库。
文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/10793