查看MySQL启动日志,发现有“InnoDB: The log sequence number in ibdata files does not match”、“InnoDB: the log sequence number in the ib_logfiles! ”、“Database page corruption on disk or a failed”和“Ending processing because of a corrupt database page.”等错误信息,数据库是同于数据文件损坏没有启动成功。
数据文件损坏有多种原因,最常见的原因是服务器断电导致数据文件和日志文件的事务ID不一致,再次启动检验到不一致而无法启动。
通过在启动日志中搜索“Database was not shut down normally!”,搜索到19处,证明MySQL最后一次不是正常停止。MySQL启动时会检测上次是否正常停止,如果不正常则会打印这条错误信息,并试图自动修复,修复不成功就放弃启动。
将MySQL以只读的形式启动,启动后数据库并不具备完整功能,但可以进行数据备份操作。
在MySQL参数文件esight.ini中[mysqld]中设置参数innodb_force_recovery=6
然后执行MySQL\bin\startup.bat进行启动MySQL。如果启动不了,则可判断无法修复,直接考虑重装eSight。
2、 使用mysqldump单独备份每一个数据库,每个数据库会单独一个备份文件,这样为了某个数据库损坏不会影响其它数据的恢复。
mysqldump --force -uroot –p########## -databases mysql >> mysql_backup.sql
mysql.exe -uroot -p < mysql_backup.sql > mysql_recover_result.txt 2>&1
如果执行正确,mysql_recover_result.txt文件为空文件。否则会有错误日志。