16.4.5 如何报告复制错误或问题

当您确定不涉及任何用户错误,并且复制仍然根本不起作用或不稳定时,就该向我们发送错误报告了。我们需要从您那里获取尽可能多的信息,以便能够找到该错误。请花费一些时间和精力来准备良好的错误报告。

如果您有一个可重复的测试用例来演示该错误,请按照第 1.7 节“如何报告错误或问题”中的说明将其 Importing 到我们的错误数据库中。如果遇到“幻像”问题(无法随意复制的问题),请使用以下过程:

  • 验证是否不涉及用户错误。例如,如果您在复制线程之外更新副本,则数据将失去同步,并且更新时可能会有唯一的密钥冲突。在这种情况下,复制 SQL 线程将停止并 await 您手动清理 table 以使其同步。 这不是复制问题。这是外部干扰导致复制失败的问题.

  • 使用--log-slave-updates--log-bin选项运行副本。这些选项使副本将其从源接收的更新记录到其自己的二进制日志中。

  • 重置复制状态之前,请保存所有证据。如果我们没有信息或只有粗略的信息,那么我们很难或不可能找到问题所在。您应收集的证据是:

  • 来自源的所有二进制日志文件

  • 副本中的所有二进制日志文件

  • 发现问题时来源提供的显示主状态的输出

  • 发现问题时副本的显示从站状态输出

  • 来自源和副本的错误日志

  • 使用mysqlbinlog检查二进制日志。以下内容将有助于查找问题 Statements。 * log_file log_pos *是显示从站状态中的Master_Log_FileRead_Master_Log_Pos值。

shell> mysqlbinlog --start-position=log_pos log_file | head

收集到有关问题的证据后,请尝试首先将其隔离为单独的测试用例。然后按照第 1.7 节“如何报告错误或问题”的说明,将问题以及尽可能多的信息 Importing 到我们的错误数据库中。