如何排查将 Aurora MySQL 作为 AWS DMS 源使用时的二进制日志记录错误?

上次更新时间:2019 年 10 月 1 日

我有一个运行 MySQL 并启用了二进制日志记录的 Amazon Aurora 数据库实例。我将 Aurora 数据库实例作为一个 AWS Database Migration Service (AWS DMS) 任务的源,但我收到了一条错误消息。如何排查并解决此错误?

简短描述

您必须在源 Aurora MySQL 数据库写入实例上启用二进制日志记录,才能在配置了“完全加载和 CDC”或“仅 CDC”模式的 AWS DMS 任务中执行更改数据捕获 (CDC) 操作。您必须使用写入实例,因为不支持将只读副本作为 CDC 操作的源。有关更多信息,请参阅将 MySQL 数据库作为 AWS DMS 源的限制

如果不启用二进制日志记录,或您连接的是读取实例,则您会看到一个与以下类似的日志条目:

消息
[SOURCE_CAPTURE ]I: System var 'log_bin' = 'OFF'
[SOURCE_CAPTURE ]E: Error Code [10001] : Binary Logging must be enabled for MySQL server [1020418] (mysql_endpoint_capture.c:366)

解决方法

如果您连接的是读取实例,请首先找到写入实例,然后使用 AWS DMS 连接到该写入实例。最佳实践是连接到集群终端节点,因为集群终端节点始终会指向集群的当前写入实例。

然后再使用集群终端节点连接到源 Aurora 集群写入节点,以确认启用了二进制日志记录:

mysql> show global variables like "log_bin";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin        | OFF   |
+---------------+-------+

如果 log_bin 参数设置为 OFF,则检查 Aurora 集群的集群参数组 以确认 binlog_format 参数是否设置为 ROW。如果 binlog_format 未设置为 ROW,请修改该参数以为 Aurora for MySQL 启用二进制日志记录

注意:这是一个静态参数,因此您必须重启 Aurora 实例才能使此更改生效。

在将 binlog_format 参数设置为 ROW 后,请连接到您的 Aurora 实例以确认是否启用了二进制日志记录:

mysql> show global variables like "log_bin";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin        | ON    |
+---------------+-------+

在启用二进制日志记录并确认您将集群写入终端节点用于 AWS DMS 后,重新启动任务。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?