引言
云数据库和IDC自建数据库一个重要的区别是弹性,IDC自建不具备或者只具备有限的弹性能力,而云能够利用IaaS资源层的能力帮助客户快速进行数据库弹性。阿里云RDS产品团队在基于云IaaS层能力以及RDS产品内核与管控能力的提升,近期推出了如下两项功能:
- RDS MySQL云盘版实例暂停功能
- 数据库在闲置状态下,实例可以暂停,暂停期间仅收取存储费用。在客户业务负载到来时,又能够快速拉起;
- RDS MySQL以及RDS PostgreSQL推出云盘性能等级的动态升降
- 客户可以根据实例业务负载情况,在高峰期动态无损升级云盘性能等级,在低峰期动态降级性能等级。
本文将针对上述两个产品功能及其实现机制做详细介绍。
RDS MySQL云盘版实例暂停功能
RDS MySQL云盘版支持实例暂停功能;暂停后的实例仅收取存储费用,而计算资源将被释放,不再计费,从而达到节省成本的目的。
核心竞争力
- 资源解耦:解绑计算和存储资源,停机后只针对存储资源进行计费
- 节点池化:利用资源的快速生产+主机上线提速能力,实现节点池快速扩容
- 离线调度:定期的触发资源池内Pod的资源腾挪和成本压缩
实例暂停流程
整体RDS MySQL暂停分为两部分:
- 阶段一:资源保留,断开网络连接;
- 阶段二:计算资源释放,存储资源保留;
架构图
暂停 VS 启动
当实例暂停后如何快速启动
实例暂停后的快速启动是实现该功能最具挑战的技术难点。为了确保实例快速启动,RDS的管控和内核团队在这方面做了分别针对性的优化:
管控层面
目前MySQL数据库云盘版通过容器部署,用过容器开发或部署的同学都了解容器的启动流程,即镜像下载、镜像解包、容器启动,其中镜像的完整下载、解包,需要花费很长时间,但就容器启动而言,往往并不需要使用全部的镜像数据,为了降低该时间,我们引入了镜像加速来加速实例启动时间。通过镜像加速,实现了远程镜像的细粒度按需加载,启动前不再需要部署镜像,在创建后可立即启动,启动时间减少了一倍。
内核层面
RDS MySQL针对MySQL实例启动和Crash Recovery做了多方面的优化,提升RTO。例如,我们通过Buffer Pool的并行加载,redo日志的并行parse和apply,以及binlog in redo等手段,达到如下效果:
- 大事务的Crash Recovery时间,从小时级提升到秒级;
- 将大实例(512GB内存)的启动恢复时间,从12秒降到2秒;
最佳实践
实操
- 暂停实例
- 登录RDS管理控制台,在左侧单击实例列表,然后在上方选择地域;
- 找到需要暂停的实例,单击右侧操作列的更多 > 暂停待用。
- 启动实例
- 登录RDS管理控制台,在左侧单击实例列表,然后在上方选择地域;
- 找到需要开启的实例,单击右侧操作列的更多 > 启动实例;
- 在弹出的窗口中单击确定,等待实例运行状态变更为运行中。
前提条件
- 实例的付费类型为按量付费。如果您的实例为包年包月,可先转换成按量付费;
- 实例类型为RDS MySQL ESSD云盘版即可;
- 实例规格必须是通用类型,独享型暂时不支持;
- 该实例下面没有只读实例或者数据库代理;
- 实例关闭的时候,请确保该实例没有大事务或者大查询在运行,否则会被强制结束;
注意事项
- 实例暂停时长上限为15天,如果15天后您仍未启动实例,实例将自动启动,以便进行必要的维护;
- 实例暂停期间所有功能均会失效,包括连接实例、备份、变配等,请在暂停前做好业务调整。
云盘PL等级的动态调整
新一代RDS云盘版实例全部基于新一代分布式块存储构建,其特点是具备更高的IOPS、更高的吞吐量和更稳定的I/O性能。为了让客户有更好的性能,RDS MySQL以及RDS PostgreSQL两个产品支持客户控制台动态调整云盘性能等级(PL=Performance level)。这样的好处是在实例较为空闲的时候选择一个费用更低的PL等级,在实例业务负载突增的时候可以选择一个性能更好的PL等级。与此同时,相关性能等级详见下面图标:
回顾&总结
降本增效是上云客户的强诉求,也是今后一段时间我们产品研发的主旋律。在过去一年时间里,阿里云RDS产品团队陆续推出了RDS MySQL Serverless、RDS PostgreSQL数据库代理、RDS MySQL基础版只读等降本增效的产品能力。这些能力在实际生产环境中,帮助我们的客户实现业务上云后的成本缩减,让客户感受到云技术的红利!在将来,我们会有更多硬核技术推出,帮助我们的客户解决业务实际问题,切实体会到云计算的弹性和魅力。
作者信息
李宗源,花名厘想,隶属于RDS产品部,致力于让客户更好的使用RDS MySQL服务。
如果对于RDS数据库服务有任何问题or咨询,请发邮件至:vogts.wangt@alibaba-inc.com