MySQL复制失败在这个博客中,我解释如何从复制故障引起的损坏继电器恢复日志文件。

MySQL副本存储数据来自源头的二进制日志的中继日志文件。这个文件可能损坏,由于各种原因,主要是硬件故障。如果发生这种情况,复制将停止工作,和复制的错误日志条目类似于:

一旦你执行建议检查,发现失败的原因是,事实上,腐败继电器的日志文件,你可以通过重置副本恢复复制。

首先,您必须确保源服务器的二进制日志不损坏。你可以做这个的帮助下mysqlbinlog命令。简单地运行它在二进制日志,确保它不会失败的错误。

找出当前的二进制日志,运行命令显示副本状态(或显示奴隶状态如果您正在运行MySQL,比8.0.22)。

然后找到的价值Relay_Source_Log_File(Relay_Master_Log_File):

这将是二进制日志的副本SQL线程执行最后一个语句。

同时,注意到的价值Exec_Source_Log_Pos(Exec_Master_Log_Pos):最新的执行位置。这将为下一个步骤是必要的。

如果您使用的是GTIDs,你需要找到包含最后一个GTID二进制日志Executed_Gtid_Set

一旦你确保源的二进制日志文件是健康的,你可以运行重置副本(重置的奴隶)语句。在描述https://dev.mysql.com/doc/refman/8.0/en/reset-replica.html”,它清除复制元数据存储库,删除所有中继日志文件,并开始一个新的中继日志文件。也重置为0的复制延迟指定SOURCE_DELAY | MASTER_DELAY选项的改变复制源(从MySQL 8.0.23)或声明改变主声明(MySQL 8.0.23之前)。

所以你需要运行改变复制(或改变)命令。如果你使用定位复制的副本Relay_Source_Log_FileExec_Source_Log_Pos上一步中记录。

对于GTID-based副本,使用SOURCE_AUTO_POSITION=1(MASTER_AUTO_POSITION=1)。

结论

中继日志文件的副本存储变化,可以从源服务器检索。因此安全移除损坏继电器日志文件的帮助下重置副本声明,然后允许复制重新加载数据从源服务器上的二进制日志文件。检查如果源服务器没有在执行此操作之前冲洗所需的二进制日志。

订阅
通知的
客人

0评论
内联反馈
查看所有评论