

# 使用 MySQL 只读副本
<a name="USER_MySQL.Replication.ReadReplicas"></a>

接下来，您可以找到有关使用 RDS for MySQL 上的只读副本的特定信息。有关只读副本及其使用说明的一般信息，请参阅[使用数据库实例只读副本](USER_ReadRepl.md)。

有关 MySQL 只读副本的更多信息，请参阅以下主题。
+ [使用 MySQL 配置复制筛选条件](USER_MySQL.Replication.ReadReplicas.ReplicationFilters.md)
+ [使用 MySQL 配置延迟复制](USER_MySQL.Replication.ReadReplicas.DelayReplication.md)
+ [使用 MySQL 更新只读副本](USER_MySQL.Replication.ReadReplicas.Updates.md)
+ [使用 MySQL 处理多可用区只读副本部署](USER_MySQL.Replication.ReadReplicas.MultiAZ.md)
+ [将级联只读副本用于 RDS for MySQL](USER_MySQL.Replication.ReadReplicas.Cascading.md)
+ [监控 MySQL 只读副本的复制滞后](USER_MySQL.Replication.ReadReplicas.Monitor.md)
+ [开始和停止 MySQL 只读副本复制](USER_MySQL.Replication.ReadReplicas.StartStop.md)
+ [排查 MySQL 只读副本问题](USER_ReadRepl.Troubleshooting.md)

## 使用 MySQL 配置只读副本
<a name="USER_MySQL.Replication.ReadReplicas.Configuration"></a>

请确保在源数据库实例上启用自动备份，然后 MySQL DB 实例才能用作复制源。为此，请将备份保留期设定为非 0 值。此要求也适用于作为一个只读副本的源数据库实例的另一个只读副本。运行任何版本的 MySQL 的只读副本都支持自动备份。可以为 MySQL 数据库实例配置基于二进制日志坐标的复制。

可以在以下版本上使用全局事务标识符（GTIDS）配置复制：
+ RDS for MySQL 5.7.44 版本及更高的 5.7 版本
+ RDS for MySQL 8.0.28 版本及更高的 8.0 版本
+ RDS for MySQL 8.4.3 版本及更高的 8.4 版本

有关更多信息，请参阅 [使用基于 GTID 的复制](mysql-replication-gtid.md)。

您可以从同一区域内的一个数据库实例创建最多 15 个只读副本。为了有效地进行复制，每个只读副本具有的计算和存储资源的量应与源数据库实例的一样多。如果扩展源数据库实例，则还应扩展只读副本。

RDS for MySQL 支持级联只读副本。要了解如何配置级联只读副本，请参阅 [将级联只读副本用于 RDS for MySQL](USER_MySQL.Replication.ReadReplicas.Cascading.md)。

您可以在引用相同源数据库实例的同时，运行多个只读副本创建和删除操作。当您执行这些操作时，应将每个源实例的只读副本数限制在 15 个以内。

MySQL 数据库实例的只读副本不能使用比其源数据库实例低的数据库引擎版本。

### 准备使用 MyISAM 的 MySQL 数据库实例
<a name="USER_MySQL.Replication.ReadReplicas.Configuration-MyISAM-Instances"></a>

如果 MySQL 数据库实例使用的是 MyISAM 等非事务性引擎，则将需要执行以下步骤才能成功地设置只读副本。需要执行这些步骤，以确保只读副本具有一致的数据副本。如果您的所有表使用的都是事务性引擎 (如 InnoDB)，则无需执行这些步骤。

1. 停止源数据库实例中的非事务性表上的所有数据操作语言 (DML) 和数据定义语言 (DDL) 操作，然后等待它们完成。SELECT 语句可以继续运行。

1. 刷新并锁定源数据库实例中的表。

1. 使用以下各节中的某种方法创建只读副本。

1. 使用如 `DescribeDBInstances` API 操作检查只读副本创建的进度。有只读副本可用后，即解除对源数据库实例的表的锁定，然后继续进行正常的数据库操作。