有时操作系统或硬件会损坏数据文件页面,位于不会导致数据库错误但会阻止mysqlbackup完成的位置:
mysqlbackup: Re-reading page at offset 0 3185082368 in /sqldata/mts/ibdata15
mysqlbackup: Re-reading page at offset 0 3185082368 in /sqldata/mts/ibdata15
mysqlbackup: Error: page at offset 0 3185082368 in /sqldata/mts/ibdata15 seems corrupt!
损坏问题可能有不同的原因。以下是一些处理它的建议:
如果 MySQL 服务器太忙,就会出现此问题。在尝试其他解决方案之前,您可能希望使用以下mysqlbackup选项 的一些非默认设置再次执行备份:
--page-reread-time
=MS
。尝试将该值设置为“ 0.05 ”,以便在校验和失败期间更快地重新读取。--page-reread-count
=retry_limit
。尝试将该值设置为“ 1000 ”,以允许在 MySQL Enterprise Backup 放弃并抛出错误之前在校验和失败期间进行更多重读。
即使磁盘上的数据实际上没有损坏,内存中的加扰数据也会导致问题。重启数据库服务器和存储设备,查看问题是否存在。
如果在数据库服务器和存储设备重启后问题仍然存在,您的磁盘可能真的损坏了。您可能会考虑从较早的备份中恢复数据并“前滚”最近的更改以使数据库恢复到当前状态。
如果你想让 MySQL Enterprise Backup 在你去调查问题的根本原因之前完成备份,你可以通过在服务器上运行 innochecksum实用程序来重写磁盘上的校验和值:
innochecksum --no-checksum --write=crc32
该选项
--no-checksum
禁用该工具的验证功能,该选项--write=crc32
使 innochecksum重写磁盘上的校验和值。
重要提示:不要将腐败问题视为小烦恼。找出导致损坏的系统问题——但是,此类故障排除超出了本手册的范围。