在 AWS Aurora 中配置跨区域复制,最推荐直接使用 Aurora Global Database 功能,适用于需要全球分布读取低延迟或跨区域灾难恢复的场景。配置前需注意源集群与目标区域间的网络延迟影响,且若源集群加密,只读副本必须加密。
先说结论:Aurora Global Database 通过基于存储的复制实现跨区域同步,通常延迟低于 1 秒,支持在分钟内完成故障转移。
- 适合:全球应用读取扩展、跨区域灾难恢复、最小化停机迁移。
- 先准备:确认主集群状态为 Available,检查区域间数据传输费用及副本数量限制。
- 验收:验证辅助区域集群状态为 Available,检查复制延迟指标。
命令速用版
配置 Aurora Global Database 主要通过 AWS 管理控制台完成,CLI 可用于辅助验证参数组。
控制台操作路径:
登录 AWS 管理控制台 -> 打开 Amazon RDS 控制台 -> 导航窗格选择 Databases (数据库) -> 选择 Aurora 全局数据库 -> 操作中选择添加 AWS 区域。
CLI 验证参数组:
使用 describe-db-cluster-parameters 命令验证参数组是否创建成功,复制参数组后需等待至少 5 分钟再创建集群。
为什么会这样
Aurora Global Database 使用基于存储层的复制机制,而非数据库引擎层,因此复制延迟通常不到 1 秒。
这种架构将数据库引擎排除在复制过程之外,使数据库引擎专用于处理工作负载,无需配置二进制日志复制。主集群所在区域处理写入,辅助区域处理读取,跨区域复制由 Aurora 存储层专用基础设施处理,确保主区域和辅助区域的数据库资源完全可用。
分步处理
步骤 1:检查前置条件
确认源数据库集群状态为 Available。若源集群已加密,目标只读副本必须加密。检查主数据库集群中的读取器实例数加上辅助集群数不可超过 15 个。
步骤 2:添加辅助区域
在 RDS 控制台的 Aurora 全局数据库页面,选择添加 AWS 区域。选择辅助 AWS 区域,不能选择已有辅助集群的区域或主集群所在区域。
步骤 3:配置参数组
若使用 Aurora MySQL 版本 3,确保辅助集群的 lower_case_table_names 值与主集群匹配。建议主集群和辅助集群使用相同的数据库引擎版本。
步骤 4:完成创建
重复上述过程可添加多个辅助集群,最多可以将 10 个辅助数据库集群挂载到 Aurora Global Database。创建后等待集群状态变为 Available。
怎么验证是否生效
检查集群状态:
在 RDS 控制台查看全局数据库页面,确认辅助 AWS 区域的状态显示为 Available。
验证复制延迟:
通过 CloudWatch 监控指标查看跨区域复制延迟,通常应低于 1 秒。若延迟过高,检查区域间网络通道。
测试读取操作:
将应用程序读取流量指向辅助区域终端节点,确认能读取到主区域写入的最新数据。
常见坑
副本数量限制:
主数据库集群中的 Aurora 副本数量决定了可添加的备用数据库集群数量。例如,若有 1 个备用集群且主集群中有 14 个读取器实例,则无法再添加辅助集群。
参数组不兼容:
无法将数据库集群参数组复制到其他 AWS 区域。需在新区域创建基于默认参数组的新参数组,并确保关键参数如 lower_case_table_names 匹配。
数据传输费用:
跨区域复制时传输的数据可产生 Amazon RDS 数据传输费用,针对传输到源 AWS 区域以外的数据收费。
加密要求:
如果加密了源数据库集群,则必须加密只读副本,不支持将加密集群复制到未加密副本。
常见问题
跨区域复制延迟通常是多少?
通常低于 1 秒。Aurora 全局数据库使用基于存储的复制功能,延迟通常低于 1 秒,使数据库完全可用于处理应用程序工作负载。
主区域故障后如何恢复?
可以在不到 1 分钟的时间内提升其中一个辅助区域。即使发生完全区域停机,Aurora 集群也可以在不到 1 分钟的时间内恢复读写功能。
辅助区域最多可以有多少个副本?
每个辅助数据库集群最多可以包含 16 个 Aurora 副本。这不同于主集群的 15 个副本限制,具体取决于集群配置。
是否支持未加密集群复制到加密集群?
可以创建加密和不加密数据库集群的只读副本。但如果源集群加密,则副本必须加密。
参考来源
- 跨 AWS 区域复制 Amazon Aurora MySQL 数据库集群
- Amazon Aurora Global Database
- 将 AWS 区域 添加到 Amazon Aurora Global Database
- Aurora 全局数据库
- 使用 Aurora Global Database 以尽可能短的停机时间在各个 AWS 区域迁移 Amazon Aurora
- 使用 Amazon Aurora 进行复制
- 在 Amazon Aurora 中复制数据库集群参数组