什么是扩容
DRDS 平滑扩容是指通过增加 RDS 的数量以提升整体性能。当 RDS 的 IOPS、CPU、磁盘容量等指标到达瓶颈,并且 SQL 优化、RDS 升配已无法解决瓶颈(例如磁盘已升至顶配)时,可通过 DRDS 水平扩容增加 RDS 数量,提升 DRDS 数据库的容量。
DRDS 平滑扩容通过迁移分库到新 RDS 来降低原 RDS 的压力。例如,扩容前8个库的压力集中在一个 RDS 实例上,扩容后8个库分别部署在两个 RDS 实例上,单个 RDS 实例的压力就明显降低。如下图所示:
drds-expansion
说明:扩容多次后,如果出现 RDS 数量和分库数量相等的情况,需要创建另外一个 DRDS 和预期容量 RDS 的数据库,再进行数据迁移以达到更大规模数据容量扩展的目标。此过程较复杂,推荐创建DRDS数据库时要考虑未来2-3年数据的增长预期,做好 RDS 数量规划。
判断是否需要扩容
DRDS 是否需要进行平滑扩容,可以通过观察 RDS 的三个指标进行判断:IOPS、CPU、磁盘空间。在 RDS 控制台可以查看这些指标,详情请参见 RDS 相关文档。
在 RDS 控制台也可以针对这些指标设置专门的报警项,报警策略及默认阈值见下图。
rds-monitor
CPU 及 IOPS 指标
RDS 平台 CPU 监控信息。
RDS-CPU
RDS 对 IO 的频率做了限制,体现在 IOPS 这个指标上。
RDS-IOPS
对于以上两个指标,如果发现任何一个指标长期保持在80%以上或频繁收到报警信息,请考虑通过以下步骤来解决:
尝试 SQL 优化。CPU 利用率过高的问题通常都可以通过这一步解决,详情请参考 MySQL CPU 使用率高的解决方法及MySQL IOPS 使用率高的解决方法。
SQL 优化无法解决问题时,可以升高 RDS 的相关规格。详情请参考 RDS 升配文档。
当 CPU 和 IOPS 超标时,可以通过设置只读库的方式来分担主库负荷。注意读写分离会影响读一致性。详情请参见设置读写分离文档。
当以上步骤无法很好地解决问题时,请考虑进行 DRDS 扩容。
磁盘空间
RDS 的磁盘空间有以下几种:
数据空间:数据所占用的空间。随着数据的插入,空间占用量会一直增长。磁盘存储容量的余量建议保持在30%以上。
系统文件空间:包括共享表空间、错误日志文件等。
Binlog 文件空间:这是数据库运行过程中产生的空间。更新事务越多,空间占用量就越大。
判断是否需要扩容主要关注数据空间即可。当数据空间将要或预期要超出磁盘容量时,可以通过扩容的方式将数据分散到多个 RDS。
DISK-SPACE
扩容风险及注意事项
DRDS 扩容流程分为 配置>迁移>切换>清理 四个步骤。具体请参考扩容操作文档。
在扩容前请注意以下事项:
如果需要新增5个或5个以上 RDS 实例,需要事先提工单,以防后端迁移资源不足造成迁移不成功。
源 RDS 实例扩容过程中会有读压力,请尽量在源 RDS 低负载时操作。
扩容期间请勿在控制台提交 DDL 任务或连接 DRDS 直接执行 DDL SQL,否则会导致扩容任务失败。
扩容需要源库表中有主键,如果没有需要事先加好主键。
扩容的切换动作会将读写流量切换到新增的 RDS 上,切换过程大约持续3~5分钟,建议在停业务的情况下进行切换。
在执行切换前,扩容动作不会对 DRDS 产生任何影响。因此在切换前都可以通过回滚来放弃本次扩容。
扩容操作对数据库有一定压力,建议在业务低谷期操作。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。