机房意外断电,导致服务器宕机。
zabbix 所连的mysql数据库重启时启动失败。如下报错:
分析
因为突然掉电,导致有些log没有写入系统,所以出现了序列号不一致情况。MySQL 在机
器关机的时候有数据没有落地,表空间损坏,导致重启之后无法正常恢复,线程在数据页中
读取不到需要的 page 和数据。
需要进行操作,让 MySQL 跳过恢复,启动 MySQL,然后把数据导出来,再重建数据库导
入。
MySQL 有个一个特性:Forcing InnoDB Recovery,,启用这个特性需要设置
innodb_force_recovery 大于 0。innodb_force_recovery 可以设置为 16,
大的值包含前面
所有小于它的值的影响。
vim /etc/f#4以上的值可能永久导致数据文件损坏。本次一直尝试直到6才能重启成功。innodb_force_recovery = 6
重启mysql成功后。此时的zabbix库仅有只读权限。但可以新建库、表。
再备份zabbix库。备份过程中由于表空间损坏导致备份失败,并且有详细的表行信息。可
以暂时记录下来。
由于本次看到是history表损坏。history表是历史记录并不重要因此可以直接舍弃。
再次使用mysqldump单独备份zabbix各表
删除/移走 /opt/mysqldb/3306/data 下 ib* 及 zabbix 库 文件
注释 #innodb_force_recovery = 6 重启mysql 。启动成功。
新建zabbix库,导入sql。重启zabbix-server。
登录正常,显示正常。