写点什么

加速 Amazon RDS for MySQL 只读副本提升

  • 2022 年 9 月 16 日
    北京
  • 本文字数:1328 字

    阅读完需:约 4 分钟

概述

本文主要讲述在一个 RDS MySQL 集群中,如何在有限的时间内尽可能加快从 MySQL Read Replica 中提升。

本方案适用场景

  • 数据库数据量大、停机维护窗口时间短

  • 需要在提升后需要立即创建 Read Replica

方案描述

假定原有数据库集群为一个主节点、一个只读副本。我们现在希望将这个 RDS 集群拆分成 2 个独立的集群。



首先我们需要在原集群中创建一个只读副本,然后只读等待数据同步完成。


您可以通过查看 Amazon RDS ReplicaLag 指标,在 Amazon CloudWatch 中监控复制滞后。当 ReplicaLag 指标达到 0 时,即表示副本已赶上主数据库实例进度。如果 ReplicaLag 指标返回 -1,则当前未激活复制。ReplicaLag = -1 等效于 Seconds_Behind_Master = NULL


创建只读副本的行为,会从当前主节点的最新快照中恢复出一个数据库副本。因此最近一次快照时间会影响只读副本创建后数据同步的时间。


建议在创建只读副本之前查看最近一次快照的时间,如果快照时间距离当前时间比较长。在创建手动快照后,可以缩短创建 Read Replica 的时间。



在只读副本“Read Replica B”上创建快照。


等待完成快照创建,再“提升”只读副本“Read Replica B”,并选择启用自动备份。


此时在“Read Replica B”上做快照,速度会较快,原因是系统会自动选取主节点的快照做增量快照,而不是对只读节点的全量存储做快照。


如果提升时选择不启动自动备份,提升后的实例是无法创建只读节点的。重新开启自动备份后即可创建只读节点,只需要将备份的保留周期设置为大于 0 天。


“提升”完成后,“Read Replica B”会从“DB Cluster 1”的集群中分离出来,成为一个新的独立数据库集群“DB Cluster 2”。


“提升”这个行为会自动触发被提升节点的快照操作。默认情况下,新建的只读副本(Read Replica B)是没有快照的。因此会从全量存储中做一次快照,如果这个节点的数据量非常大,这个时间将会持续很长。预计约 1 小时/TB 的速度完成快照。


执行快照期间,您无法对快照行为进行“取消”操作,会增加非预期的窗口维护时间。


如果按照前面的步骤,在已经做过手工快照,此步骤的自动快照时间会大大缩减。



在“DB Cluster 2”上创建只读副本“Read Reaplic B”,等待数据完成同步。


如果前面在提升的时候没有开启自动备份,此时控制台中“创建只读”的菜单项为灰色禁用状态。



至此 RDS MySQL 的提升并添加只读副本操作完成。

参考资料

在 Amazon RDS for MySQL 数据库上提升 MySQL 只读副本的最佳实践 | 亚马逊 AWS 官方博客

使用只读副本 – Amazon Relational Database Service


本篇作者


林业

亚马逊云科技解决方案架构师,负责基于亚马逊云科技的云计算方案的咨询与架构设计。拥有超过 14 年研发经验,曾打造千万级用户 APP,多项 Github 开源项目贡献者。在游戏、IOT、智慧城市、汽车、电商等多个领域都拥有丰富的实践经验。


茅金辉

亚马逊云科技资深技术客户经理


郁冰

亚马逊云科技技术客户经理,负责企业级客户的架构和成本优化、技术支持,协助客户实现亚马逊云科技最佳实践等工作。曾就职于 Cisco,Microsoft 等技术公司,长期从事于安全,网络,公有云等技术领域。


更多信息,请访问链接:https://aws.amazon.com/cn/getting-started/databases/get-started/?nc=sn&loc=4&trk=fab55528-7c2e-4517-b90e-65b760ecfc1c&sc_channel=el

用户头像

还未添加个人签名 2019.09.17 加入

还未添加个人简介

评论

发布
暂无评论
加速 Amazon RDS for MySQL 只读副本提升_MySQL_亚马逊云科技 (Amazon Web Services)_InfoQ写作社区