### 17.5.5 如何报告复制错误或问题

当您确定不涉及用户错误，并且复制仍然根本无法工作或不稳定时，是时候向我们发送错误报告了。我们需要从您那里获得尽可能多的信息，以便能够追踪错误。请花一些时间和精力来准备一份好的错误报告。

如果您有一个可重复的测试用例来演示该错误，请使用中给出的说明将其输入到我们的错误数据库中[第 1.6 节，“如何报告错误或问题”](bug-reports.html).如果您遇到“幻像”问题（您无法随意复制的问题），请使用以下过程：

1.  验证不涉及用户错误。例如，如果您在复制线程之外更新副本，则数据将不同步，并且您可能会在更新时遇到唯一键违规。在这种情况下，复制线程会停止并等待您手动清理表以使它们同步。*这不是复制问题。这是一个外部干扰导致复制失败的问题。*

2.  确保副本在启用二进制日志记录的情况下运行（[`log_bin`](replication-options-binary-log.html#sysvar_log_bin)系统变量），并与[`--log-slave-updates`](replication-options-binary-log.html#sysvar_log_slave_updates)启用选项，这会导致副本将从源接收到的更新记录到自己的二进制日志中。这些设置是默认设置。

3.  在重置复制状态之前保存所有证据。如果我们没有信息或只有粗略的信息，我们就很难或不可能找到问题所在。您应该收集的证据是：

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

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

    -   的输出[`显示主状态`](show-master-status.html)从您发现问题时的源头

    -   的输出[`显示副本状态`](show-replica-status.html)从您发现问题时的副本

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

4.  采用[**mysqlbinlog**](mysqlbinlog.html)检查二进制日志。以下内容应该有助于找到问题陈述。*`日志文件`*和*`日志位置`*是`Master_Log_File`和`Read_Master_Log_Pos`值来自[`显示副本状态`](show-replica-status.html).

    ```
    $> mysqlbinlog --start-position=log_pos log_file | head
    ```

    收集问题的证据后，首先尝试将其隔离为单独的测试用例。然后使用尽可能多的信息将问题输入到我们的错误数据库中[第 1.6 节，“如何报告错误或问题”](bug-reports.html).
