如何为与 Amazon Aurora MySQL 兼容的集群开启二进制日志记录?

上次更新日期:2022 年 12 月 12 日

我想将 Amazon Aurora MySQL 兼容版本集群复制到与 MySQL 兼容的外部数据库。或者,我想创建一个跨区域副本。

简短描述

默认情况下,Aurora MySQL 兼容版的二进制日志记录处于关闭状态。要检查数据库实例上的二进制日志记录当前是否已关闭,请运行以下命令:

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

要复制到与 MySQL 兼容的外部数据库或创建跨区域副本,您必须为自己的数据库集群开启二进制日志记录。

注意:为 Aurora 开启二进制日志记录时,崩溃后的恢复时间可能会较长。这是因为在写入器实例上执行了完整的二进制日志恢复。崩溃恢复的持续时间取决于二进制日志中记录的数据量,这些数据基于 binlog_format 的格式。持续时间还取决于您的工作负载。

解决方案

  1. 打开 Amazon Relational Database Service (Amazon RDS) 控制台
  2. 在导航窗格中,选择参数组
    注意:如果您使用默认的 Aurora 数据库集群参数组,则创建新数据库集群参数组
  3. 对于 Type(类型),选择 DB Cluster Parameter Group(数据库集群参数组)。
  4. 选择数据库自定义集群参数组,选择 Parameter group actions(参数组操作),然后再选择 Edit(编辑)。
  5. 更改 binlog_format 参数的值,例如,将其更改为 ROW(行)、Statement(语句)或 MIXED(混合)。除非需要特定的二进制日志格式,否则这就是可使用的最佳实践。
  6. 选择 Save changes(保存更改)。

注意:将二进制日志格式设置为 ROW(行)可能会导致二进制日志文件非常庞大。大型二进制日志文件会减少数据库集群的可用存储量。它们还会增加执行数据库集群还原的时间。

另外,请注意 binlog_format 是一个静态参数。您必须重启集群中的写入器数据库实例才能使更改生效。即使您已经有自定义的数据库集群参数组,也需要重新启动。

如果您已在第 2 步中创建新的数据库集群参数组,则将该参数组附加到您的数据库集群:

  1. 打开 Amazon RDS 控制台
  2. 在导航窗格中的集群 下,选择修改集群
  3. DB Cluster Parameter Group(数据库集群参数组)更新为新的数据库集群参数组,然后选择 Apply immediately(立即应用)。
  4. 选择 Continue(继续),然后选择 Modify cluster(修改集群)。

注意:更改与数据库集群关联的数据库集群参数组后,必须重启集群中的主数据库实例,才能应用更改。

要确认您的数据库集群现在已开启二进制日志记录,请再次运行命令以验证二进制日志记录:

mysql> show variables like 'log_bin';
+----------------+------------+
| Variable_name  | Value      |
+----------------+------------+
| log_bin        | ON         |
+----------------+------------+
mysql> show variables like 'binlog_format';
+----------------+------------+
| Variable_name  | Value      |
+----------------+------------+
| binlog_format  | STATEMENT  |
+----------------+------------+