mysql 不停的重启,Log 报有InnoDB: Database page corruption on disk or a failed

时间:2022-06-01 19:10:30
现在临时把数据库的状态设置成  innodb_force_recovery=4 强制恢复状态,由于数据文件特别大(600G+),不能做dump后再重建,然后只好使用mysqlcheck去检查所有表,查找具体哪张表有问题,但当表特别大的时候,check table tablename;特别慢,有什么其他好办法吗

4 个解决方案

#1


innodb并不支持修复操作

mysqlcheck uses the SQL statements CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, and OPTIMIZE TABLE in a convenient way for the user.

for InnoDB tables, which can be checked with CHECK TABLE, but not repaired with REPAIR TABLE. 

#2


是,现在只需要使用check table 确定是哪张表有问题,找到之后只把有问题的表重建,应该就可以吧,但现在由于表太多了,查找的太慢了,所以确定哪张表有问题比较困难。我已经找了一整天了,才检查了三百多张表,还有五百多张表要查

#3


仔细找下 错误日志应该有报哪个表的哪个页错误

#4


数据量大,表又很多,挨个去check table恐怕不行,最好还是找个空闲时间,服务器压力较小的时候,去执行check table。

#1


innodb并不支持修复操作

mysqlcheck uses the SQL statements CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, and OPTIMIZE TABLE in a convenient way for the user.

for InnoDB tables, which can be checked with CHECK TABLE, but not repaired with REPAIR TABLE. 

#2


是,现在只需要使用check table 确定是哪张表有问题,找到之后只把有问题的表重建,应该就可以吧,但现在由于表太多了,查找的太慢了,所以确定哪张表有问题比较困难。我已经找了一整天了,才检查了三百多张表,还有五百多张表要查

#3


仔细找下 错误日志应该有报哪个表的哪个页错误

#4


数据量大,表又很多,挨个去check table恐怕不行,最好还是找个空闲时间,服务器压力较小的时候,去执行check table。