

# 为多可用区数据库集群配置 MySQL 二进制日志记录
<a name="USER_Binlog.MultiAZ"></a>

Amazon RDS for MySQL 多可用区数据库集群中的二进制日志记录会记录所有数据库更改，以支持复制、时间点故障恢复和审计。在多可用区数据库集群中，二进制日志将辅助节点与主节点同步，从而确保跨可用区的数据一致性并实现无缝失效转移。

为了优化二进制日志记录，Amazon RDS 支持二进制日志事务压缩，这样可以降低二进制日志的存储要求并提高复制效率。

**Topics**
+ [多可用区数据库集群的二进制日志事务压缩](#USER_Binlog.MultiAZ.compression)
+ [为多可用区数据库集群配置二进制日志事务压缩](#USER_Binlog.MultiAZ.configuring)

## 多可用区数据库集群的二进制日志事务压缩
<a name="USER_Binlog.MultiAZ.compression"></a>

二进制日志事务压缩使用 zstd 算法来减小存储在二进制日志中的事务数据的大小。启用后，MySQL 数据库引擎会将事务有效载荷压缩为单个事件，从而显著减少 I/O 和存储开销。此功能可提高数据库性能，减小二进制日志的大小，并优化在多可用区数据库集群中管理和复制日志的资源使用。

Amazon RDS 通过以下参数为 RDS for MySQL 多可用区数据库集群提供二进制日志事务压缩：
+ `binlog_transaction_compression` – 启用 (`1`) 后，数据库引擎会压缩事务有效载荷，并将其作为单个事件写入二进制日志。这样可减少存储空间使用量并降低 I/O 开销。默认情况下，将禁用此参数。
+ `binlog_transaction_compression_level_zstd` – 为二进制日志事务配置 zstd 压缩级别。较高的值会提高压缩比，从而进一步降低存储要求，但会增加压缩的 CPU 和内存使用量。默认值为 3，范围为 1-22。

这些参数允许您根据工作负载特征和资源可用性来微调二进制日志压缩。有关更多信息，请参阅 MySQL 文档中的 [Binary Log Transaction Compression](https://dev.mysql.com/doc/refman/8.4/en/binary-log-transaction-compression.html)。

二进制日志事务压缩具有以下主要优势：
+ 压缩会减小二进制日志的大小，对于大型事务或写入量大的工作负载尤其如此。
+ 较小的二进制日志可减少网络和 I/O 开销，提高复制性能。
+ `binlog_transaction_compression_level_zstd` 参数提供对在压缩比和资源消耗之间权衡的控制。

## 为多可用区数据库集群配置二进制日志事务压缩
<a name="USER_Binlog.MultiAZ.configuring"></a>

要为 RDS for MySQL 多可用区数据库集群配置二进制日志事务压缩，请修改相关的集群参数设置以满足您的工作负载要求。

### 控制台
<a name="USER_Binlog.MultiAZ.configuring-console"></a>

**启用二进制日志事务压缩**

1. 修改数据库集群参数组，以将 `binlog_transaction_compression` 参数设置为 `1`。

1. （可选）根据您的工作负载要求和资源可用性调整 `binlog_transaction_compression_level_zstd` 参数的值。

有关更多信息，请参阅 [修改数据库集群参数组中的参数](USER_WorkingWithParamGroups.ModifyingCluster.md)。

### AWS CLI
<a name="USER_Binlog.MultiAZ.configuring-cli"></a>

要使用 AWS CLI 配置二进制日志事务压缩，请执行 [modify-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html) 命令。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name your-cluster-parameter-group \
  --parameters "ParameterName=binlog_transaction_compression,ParameterValue=1,ApplyMethod=pending-reboot"
```
对于：Windows  

```
aws rds modify-db-cluster-parameter-group ^
  --db-cluster-parameter-group-name your-cluster-parameter-group ^
  --parameters "ParameterName=binlog_transaction_compression,ParameterValue=1,ApplyMethod=pending-reboot"
```

### RDS API
<a name="USER_Binlog.MultiAZ.configuring-api"></a>

要使用 Amazon RDS API 配置二进制日志事务压缩，请执行 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterParameterGroup.html) 操作。