

# 为 Aurora MySQL 设置增强型二进制日志
<a name="AuroraMySQL.Enhanced.binlog"></a>

增强型二进制日志可减少开启二进制日志所导致的计算性能开销，在某些情况下，该开销最高可达 50%。使用增强型二进制日志，这种开销可以减少到大约 13%。为了减少开销，增强型二进制日志将二进制和事务日志并行写入存储，从而最大限度地减少在事务提交时间写入的数据。

与社区 MySQL 二进制日志相比，使用增强型二进制日志还可以将重启和故障转移后的数据库恢复时间缩短多达 99%。增强型二进制日志与现有的基于二进制日志的工作负载兼容，您与其交互的方式和您与社区 MySQL 二进制日志交互的方式相同。

增强型二进制日志在 Aurora MySQL 版本 3.03.1 及更高版本上可用。

**Topics**
+ [配置增强型二进制日志参数](#AuroraMySQL.Enhanced.binlog.enhancedbinlog.parameters)
+ [其他相关参数](#AuroraMySQL.Enhanced.binlog.other.parameters)
+ [增强型二进制日志和社区 MySQL 二进制日志之间的区别](#AuroraMySQL.Enhanced.binlog.differences)
+ [增强型二进制日志的 Amazon CloudWatch 指标](#AuroraMySQL.Enhanced.binlog.cloudwatch.metrics)
+ [增强型二进制日志限制](#AuroraMySQL.Enhanced.binlog.limitations)

## 配置增强型二进制日志参数
<a name="AuroraMySQL.Enhanced.binlog.enhancedbinlog.parameters"></a>

您可以通过开启/关闭增强型二进制日志参数，在社区 MySQL 二进制日志和增强型二进制日志之间切换。现有的二进制日志使用者可以继续读取和使用二进制日志文件，而不会在二进制日志文件序列中出现任何间隔。

要开启增强型二进制日志，请设置以下参数：


| 参数 | 默认值 | 描述 | 
| --- | --- | --- | 
| binlog\$1format | – | 将 binlog\$1format 参数设置为您选择的二进制日志记录格式，以开启增强型二进制日志。确保 binlog\$1format parameter 未设置为 OFF。有关更多信息，请参阅[配置 Aurora MySQL 二进制日志记录](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.MySQL.BinaryFormat.html)。 | 
| aurora\$1enhanced\$1binlog | 0 | 在与 Aurora MySQL 集群关联的数据库集群参数组中，将此参数的值设置为 1。更改此参数的值时，当 DBClusterParameterGroupStatus 值显示为 pending-reboot 时，必须重启写入器实例。 | 
| binlog\$1backup | 1 |  关闭此参数可开启增强型二进制日志。为此，请将此参数的值设置为 0。 | 
| binlog\$1replication\$1globaldb | 1 |  关闭此参数可开启增强型二进制日志。为此，请将此参数的值设置为 0。 | 

**重要**  
只有在使用增强型二进制日志时，才能关闭 `binlog_backup` 和 `binlog_replication_globaldb` 参数。

要关闭增强型二进制日志，请设置以下参数：


| 参数 | 描述 | 
| --- | --- | 
| aurora\$1enhanced\$1binlog | 在与 Aurora MySQL 集群关联的数据库集群参数组中，将此参数的值设置为 0。每当您更改此参数的值时，当 DBClusterParameterGroupStatus 值显示为 pending-reboot 时，必须重启写入器实例。 | 
| binlog\$1backup | 关闭增强型二进制日志时开启此参数。为此，请将此参数的值设置为 1。 | 
| binlog\$1replication\$1globaldb | 关闭增强型二进制日志时开启此参数。为此，请将此参数的值设置为 1。 | 

要检查增强型二进制日志是否已开启，请在 MySQL 客户端中使用以下命令：

```
mysql>show status like 'aurora_enhanced_binlog';
              
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| aurora_enhanced_binlog | ACTIVE |
+------------------------+--------+
1 row in set (0.00 sec)
```

开启增强型二进制日志时，输出将对于 `aurora_enhanced_binlog` 显示 `ACTIVE`。

## 其他相关参数
<a name="AuroraMySQL.Enhanced.binlog.other.parameters"></a>

当您开启增强型二进制日志时，以下参数会受到影响：
+ `max_binlog_size` 参数可见但不可修改。当开启增强型二进制日志时，此参数的默认值 `134217728` 会自动调整为 `268435456`。
+ 与社区 MySQL 二进制日志不同，当开启增强型二进制日志时，`binlog_checksum` 不充当动态参数。要使对此参数的更改生效，必须手动重启数据库集群，即使 `ApplyMethod` 为 `immediate` 也是如此。
+ 开启增强型二进制日志时，您对 `binlog_order_commits` 参数设置的值对提交顺序没有影响。提交始终是按顺序排列的，不会对性能产生任何进一步的影响。

## 增强型二进制日志和社区 MySQL 二进制日志之间的区别
<a name="AuroraMySQL.Enhanced.binlog.differences"></a>

与社区 MySQL 二进制日志相比，增强型二进制日志与克隆、备份和 Aurora Global Database 的交互方式不同。我们建议您在使用增强型二进制日志之前了解以下差异。
+ 来自源数据库集群的增强型二进制日志文件在克隆的数据库集群上不可用。
+ 增强型二进制日志文件不包含在 Aurora 备份中。因此，尽管在数据库集群上设置了任何保留期，但在还原数据库集群后，源数据库集群中的增强型二进制日志文件不可用。
+ 与 Aurora 全局数据库一起使用时，主数据库集群的增强二进制日志文件不会复制到辅助区域中的数据库集群。

****示例****  
以下示例说明了增强型二进制日志和社区 MySQL 二进制日志之间的区别。

**在还原或克隆的数据库集群上**

开启增强型二进制日志后，历史二进制日志文件在还原或克隆的数据库集群中不可用。在执行还原或克隆操作后，如果开启二进制日志，则新的数据库集群将开始写入其自己的二进制日志文件序列，从 1 开始（mysql-bin-changelog.000001）。

要在还原或克隆操作后开启增强型二进制日志，请在还原或克隆的数据库集群上设置所需的数据库集群参数。有关更多信息，请参阅 [配置增强型二进制日志参数](#AuroraMySQL.Enhanced.binlog.enhancedbinlog.parameters)。

**Example 示例：开启增强型二进制日志时执行的克隆或还原操作**  
源数据库集群：  

```
mysql> show binary logs;
                      
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        |
| mysql-bin-changelog.000002 |       156 | No        |
| mysql-bin-changelog.000003 |       156 | No        |
| mysql-bin-changelog.000004 |       156 | No        | --> Enhanced Binlog turned on
| mysql-bin-changelog.000005 |       156 | No        | --> Enhanced Binlog turned on
| mysql-bin-changelog.000006 |       156 | No        | --> Enhanced Binlog turned on
+----------------------------+-----------+-----------+
6 rows in set (0.00 sec)
```
 在还原或克隆的数据库集群上，开启增强型二进制日志时不备份二进制日志文件。为避免二进制日志数据出现不连续性，在开启增强型二进制日志之前写入的二进制日志文件也不可用。  

```
mysql>show binary logs;
                      
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        | --> New sequence of Binlog files
+----------------------------+-----------+-----------+ 
1 row in set (0.00 sec)
```

**Example 示例：关闭增强型二进制日志时执行的克隆或还原操作**  
源数据库集群：  

```
mysql>show binary logs;
                                                
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        |
| mysql-bin-changelog.000002 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000003 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000004 |       156 | No        | 
| mysql-bin-changelog.000005 |       156 | No        | 
| mysql-bin-changelog.000006 |       156 | No        |
+----------------------------+-----------+-----------+
6 rows in set (0.00 sec)
```
`mysql-bin-changelog.000003` 之后禁用了增强型二进制日志。在还原或克隆的数据库集群上，关闭增强型二进制日志后写入的二进制日志文件可用。  

```
mysql>show binary logs;
                      
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000004 |       156 | No        | 
| mysql-bin-changelog.000005 |       156 | No        | 
| mysql-bin-changelog.000006 |       156 | No        |
+----------------------------+-----------+-----------+
1 row in set (0.00 sec)
```

**在 Amazon Aurora 全局数据库上**

在 Amazon Aurora 全局数据库上，主数据库集群的二进制日志数据不会复制到辅助数据库集群。在执行跨区域故障转移过程后，二进制日志数据在新升级的主数据库集群中不可用。如果开启二进制日志，则新提升的数据库集群将开始其自己的二进制日志文件序列，从 1 开始（mysql-bin-changelog.000001）。

要在故障转移后开启增强型二进制日志，您必须在辅助数据库集群上设置所需的数据库集群参数。有关更多信息，请参阅 [配置增强型二进制日志参数](#AuroraMySQL.Enhanced.binlog.enhancedbinlog.parameters)。

**Example 示例：开启增强型二进制日志时执行全球数据库失效转移操作**  
旧的主数据库集群（故障转移前）：  

```
mysql>show binary logs;
                  
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        |
| mysql-bin-changelog.000002 |       156 | No        |
| mysql-bin-changelog.000003 |       156 | No        |
| mysql-bin-changelog.000004 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000005 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000006 |       156 | No        | --> Enhanced Binlog enabled
+----------------------------+-----------+-----------+
6 rows in set (0.00 sec)
```
新的主数据库集群（故障转移后）：  
开启增强型二进制日志后，二进制日志文件不会复制到辅助区域。为避免二进制日志数据出现不连续性，在开启增强型二进制日志之前写入的二进制日志文件不可用。  

```
mysql>show binary logs;
                      
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        | --> Fresh sequence of Binlog files
+----------------------------+-----------+-----------+ 
1 row in set (0.00 sec)
```

**Example 示例：关闭增强型二进制日志时执行全球数据库失效转移操作**  
源数据库集群：  

```
mysql>show binary logs;
                  
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000001 |       156 | No        |
| mysql-bin-changelog.000002 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000003 |       156 | No        | --> Enhanced Binlog enabled
| mysql-bin-changelog.000004 |       156 | No        | 
| mysql-bin-changelog.000005 |       156 | No        | 
| mysql-bin-changelog.000006 |       156 | No        |
+----------------------------+-----------+-----------+
6 rows in set (0.00 sec)
```
**还原或克隆的数据库集群：**  
`mysql-bin-changelog.000003` 之后禁用了增强型二进制日志。关闭增强型二进制日志后写入的二进制日志文件会被复制，并在新提升的数据库集群中可用。  

```
mysql>show binary logs;
                  
+----------------------------+-----------+-----------+
| Log_name                   | File_size | Encrypted |
+----------------------------+-----------+-----------+
| mysql-bin-changelog.000004 |       156 | No        | 
| mysql-bin-changelog.000005 |       156 | No        | 
| mysql-bin-changelog.000006 |       156 | No        |
+----------------------------+-----------+-----------+
3 rows in set (0.00 sec)
```

## 增强型二进制日志的 Amazon CloudWatch 指标
<a name="AuroraMySQL.Enhanced.binlog.cloudwatch.metrics"></a>

以下 Amazon CloudWatch 指标仅在开启增强型二进制日志时发布。


| CloudWatch 指标 | 描述 | 单位 | 
| --- | --- | --- | 
| ChangeLogBytesUsed | 增强型二进制日志使用的存储空间量。 | 字节 | 
| ChangeLogReadIOPs | 在 5 分钟的时间间隔内，在增强型二进制日志中执行的读取 I/O 操作的数量。 | 每 5 分钟计数 | 
| ChangeLogWriteIOPs | 在 5 分钟的时间间隔内，在增强型二进制日志中执行的写入磁盘 I/O 操作的数量。 | 每 5 分钟计数 | 

## 增强型二进制日志限制
<a name="AuroraMySQL.Enhanced.binlog.limitations"></a>

开启增强型二进制日志时，以下限制适用于 Amazon Aurora 数据库集群。
+ 仅在 Aurora MySQL 版本 3.03.1 及更高版本上支持增强型二进制日志。
+ 在主数据库集群上写入的增强型二进制日志文件不会复制到克隆或还原的数据库集群。
+ 与 Amazon Aurora 全局数据库一起使用时，主数据库集群的增强型二进制日志文件不会复制到辅助数据库集群。因此，在故障转移过程之后，历史二进制日志数据在新的主数据库集群中不可用。
+ 将忽略以下二进制日志配置参数：
  + `binlog_group_commit_sync_delay`
  + `binlog_group_commit_sync_no_delay_count`
  + `binlog_max_flush_queue_time`
+ 您无法删除或重命名数据库中损坏的表。要删除这些表，您可以联系 支持。
+ 开启增强型二进制日志时，会禁用二进制日志 I/O 缓存。有关更多信息，请参阅 [优化 Aurora MySQL 的二进制日志复制](binlog-optimization.md)。
**注意**  
增强型二进制日志提供了与二进制日志 I/O 缓存类似的读取性能改进以及更好的写入性能改进。
+ 不支持回溯特征。在以下情况下，无法在数据库集群中开启增强型二进制日志：
  + 当前已启用回溯特征的数据库集群。
  + 先前已启用但现在禁用回溯功能的数据库集群。
  + 从启用了回溯特征的源数据库集群或快照中还原的数据库集群。