体验RDS通用云盘核心能力
摘要:本文整理自杨浩磊(木信)老师在云端问道 20 期方案教学关于体验 RDS 通用云盘核心能力的分享。内容主要为以下四部分:
1、初识 RDS 通用云盘
2、RDS 通用云盘核心能力介绍
3、方案及应用案例、产品选型介绍
4、线上活动与权益
01、初识 RDS 通用云盘
第一部分出示RDS通用云盘
1.1云数据库 RDS
在加入RDS通用云盘之前,首先认识RDS,RDS是一款低成本、易操作和轻运维的云数据库,它提供安全可靠,高性价比和可弹性伸缩的在线数据库服务,包含四款引擎 MySQL,SQL Server,PostgreSQL 和 MariaDB, 提供容灾、备份、恢复、监控、迁移等方面的全套解决方案,解决数据库运维的烦恼。
1.2 RDS 通用云盘
今天的重点就是 RDS 通用云盘。RDS 通用云盘就是利用多级存储介质共同实现高性能和低成本的功能。首先看 PPT 中间,上面是计算层 ECS,下面是通用云盘,从左到右分为三层,分别是缓存层、数据层和冷存层,三层分别采用不同的存储介质,共同达到更高的性能和更低的成本。
1.3 RDS 通用云盘-多级存储介质
详细介绍这三种存储介质,从左到右分别是缓存盘、数据盘和冷存,从性能、弹性和可靠性三个维度来进行对比,从性能上看,高速缓存盘有很高的 IO 和很低的 IO 延迟。数据盘只具有适中的吞吐和 IO 延迟能够正常使用。冷存盘 OSS 要走网络的带宽,它的 IO 性能相对较弱,从弹性看,弹性主要对比的是存储空间,缓存版的存储空间在 64G和 8T,数据盘的存储空间的范围更大,有十几到 64T。冷存盘在 OSS 上,它是对象存储,它的存储空间相对来说是无上限的,因为它是 PB 级别很高。第三个对比的指标是可靠性。对于缓存盘用于缓存所以可靠性只是单副本,不能够持久化的保证,对于 ESSD,它是有多副本,具有 AZ 级别的容灾,具有比较高的数据保证。对于冷存,它具有 Region 级别的容载,保证性更强,对比完三个特性,缓存盘有更高的性能,但可靠性相对较弱。越往下越冷存,性能相对较弱,但容量和可靠性相对较强,利用缓存盘,提供 IO 加速的能力。客户在用通用云盘的时候,只要看到 IO 加速开关,并不需要关心用多大的缓存盘,IO 加速的功能对客户是免费的,回到数据盘,结合存储的能力,提供 IO 突发的能功能。可以让 IO 的带宽和云盘的大小进行解耦,能够应对客户突发的流量,成本则是根据客户具体突发的使用量来进行计费。对于冷存,利用它低成本的性能提供一个数据归档,能将不常访问的表的数据从 ESSD 归档到 OSS 中,用更低的存储介质来换取更低的存储成本。
1.4 RDS 通用云盘-多级存储架构
介绍完三个介质,看一下整体 RDS 通用云盘的存储架构,左侧是 RDS 整体的架构。存储层和计算层是分离的,上层是计算层,然后下层是存储层。主要看存储,存储融合三种存储介质的通用云盘。这三种存储介质分别是缓存,数据和冷存,高速缓存盘提供的是 IO 加速的能力,IO 加速通过两个方面,一个方面是扩充 Buffer Pool,将 Buffer Pool 里的一些配置放到 Buffer Pool Extension 里,然后能够进一步的提升查询效率。另一个功能是将 ESSD 数据盘的临时表文件放到高速缓存盘里,能更进一步的加快复杂查询。除高速缓存盘之外,数据盘兼容 ESSD 与之前的 RDS 的存储介质保持一致,冷存盘用的 OSS 对象存储,主要是将数据盘里的一些 IBD 数据文件通过一个 DDL,将这些数据文件转移到 OSS 中也就是通过切部分之后转移到 OSS 中。但是转移之后并不影响正常的访问,也可以提供只读查询,右边看 RDS 通用云盘利用多级存储架构可以为整体的 RDS 提供大幅的读写性能的提升,将数据存储到 OSS 上后能让它的存储成本有大幅度的下降。
02、RDS 通用云盘核心能力介绍
接下来展开介绍 RDS 通用云盘的三项核心能力。
2.1 RDS 通用云盘-IO 加速,为 RDS 查询提速
首先是第一项,缓存层的 IO 加速,缓存层的 IO 加速通过两个能力提升 RDS 的查询速度,一项是 Buffer Pool Extension,另一项则是将临时表空间从 ESSD 放到高性能的缓存盘中。这张架构图主要是 Buffer Pool Extension 的工作机制,如果没有 Buffer Pool Extension,当一个查询向数据库进行查询的时候,首先看 BP 里面有没有命中,如果没有命中就直接去 ESSD 中。而有 Buffer Pool Extension之后,如果 BP 没有命中,会去 BPE 里面查。如果 BPE 没有命中,才会进一步去 ESSD 查,相当于加一层缓存,扩充内存的数据,提高查询的速度。因为中间加缓存,能提高一定的稳定性。能减少云盘的 IO 吞吐,减少云盘的 IO 抖动,对 RDS 造成的一些影响。右边是在 8C16G 的 RDS 上进行的一个性能测试的数据,总结 IO 加速的性能优势,第一个是它能提高读写性,能缩短整个 SQL 查询的执行耗时。第二条是它可以提高实例的稳定性,降低云盘 IO 抖动对数据库的影响,因为中间加一层缓存盘作为缓存。第三个是 IO 加速本身不需要额外支付费用,客户在使用 RDS 通用硬盘的时候,只需要打开 IO 加速的开关,不需要关心使用多大的缓存盘,会根据实际的规格分配对应的缓存盘大小。本身这部分盘不需要支付额外的费用。
2.2 RDS 通用云盘-IO 突发,释放底层存储能力
介绍完 IO 加速后,接下来介绍 IO 突发,IO 突发释放的是底层的存储能力。首先介绍 IO 突发的背景,在 RDS 之前,各种存储介质里面是 PL1 到 PL3,IO 性能都跟云盘容量相绑定,当客户的 IO 流量激增的时候,如果需要更高的 IO 带宽或者 LPS 的时候,需要提升云盘的容量,或者提升云盘的 PL 等级,如果使用 RDS 通用云盘之后,当他应对激增的 IO 流量的时候,只要打开IO 突发就可以,IO 突发打开之后有功能优势,主要是两部分,一部分是 IO 的性能和存储进行解偶,另一部分是提供突发能力,能够应对 IO 流量的激增,对云盘的 IO 上限进行弹性的提升,具体的费用会根据实际的突发使用量收费,不需要额外的为存储容量本身付费。
接下来介绍 IO 突发的说明,这个表格里面和官网描述的一样,IO 突发其实只对 RDS 存储层的 IO 进行释放,整个的 RDS 的 IO 受到 ECS 和云盘两部分的影响,也受到计算层的影响,如果要真正释放 IO 突发能力,有时候可能配合较高的 RDS 规格才能发挥更好的优势,这就是为什么打开 IO 突发之后,IOPS 的上限值和吞吐的上限值都有实例规格最大的 IO上限值,没有打开IO 突发的时候,有一个提升的 IOPS,这是 RDS 通用云盘对比 ESSD PL1 做出来的差异性,在不打开 IO 突发的时候,RDS 通用云盘的基准 LPS 已经比 ESSD PL1 高出一部分,具体的高出多少可以参考这篇官方文档。
2.3 RDS 通用云盘-数据归档,为 RDS 存储降本
介绍完 IO 突发后介绍冷存层的数据归档,分层数据归档利用阿里 SQL 自研的 OSS 存储技术,将这个数据从 ESSD 中通过 DDL 移到 OSS 里,并且是完全兼容移动 InnoDB 存储引擎,归档表的数据。允许 Select 正常查询。归档表的查询可以通过 IO 加速能力一起进行查询的加速,归档表 OSS 的查询性能相对较弱,没有 ESSD盘那么高,但可以通过前面加内存缓存盘来提升它的查询加速。对于归档表的查询,在没有开启 IO 加速和开启 IO 加速之后,归档表的查询速度有明显的提升。PPT 左侧是归档表的架构,上层是内存,下层是通用云盘,将 IBD 文件通过 DDL 之后会切分出来一个Metadata 和头文件,比较少的 Metadata 和头文件存放在 ESSD 上,大部分切块之后放到 OSS 中。这里相当于是数据归档实验的架构图,数据归档之后会把数据存放成两部分,一部分在 ESSD,一部分在 OSS 中,怎么对这两部分数据做一定的备份快照。是一个比较大的挑战。
2.4 RDS 通用云盘-数据归档备份
这里采用了自研的 Grail Snapshot Server 的备份系统将常规数据和归档数据完成一致性的快照。RDS 内核提供锁表的语义,在备份期间可以禁止 OSS 的 DDL,但不影响正常的常规表的 DDL。此外因为 OSS 备份的时候还会有备份文件会膨胀。这里加一些自动回收的机制来防止备份文件进行膨胀,左侧是归档表备份的整体流程图,首先当备份请求过来之后,备份系统会向引擎下发锁表的动作。之后会创建一个快照,将 Metadata 拷贝一份。当 Metadata 拷贝完之后,就会解锁 OSS 的 DDL,解锁完之后引擎可以正常的进行 OSS 的 DDL,但备份还没有完成,因为 Metadata 获取完需要进入异步的拷贝OSS 里面的 Block 具体的块,当 OSS 里的 Block 拷贝完成之后,备份才算完成。三和四对应的是两次不同的备份,三是初次备份的时候进行一次全拷贝,对于后面增量的备份的时候,就只拷贝 Delta 的数据。
2.5 RDS 通用云盘-数据归档使用
接下来介绍数据归档的具体使用情况,数据归档打开之后具体怎么使用,对于 RDS MySQL 和 RDS PostgreSQL 其实有不同的 DDL 来执行,执行完之后归档的 OSS 表都可以支持进行 Select 查询。
RDS 是四款引擎,MySQL,SQL Server,PostgreSQL 和 MariaDB。对于 SQL Server 和 MariaDB,SQL Server 支持数据归档,可以参考官方文档,而 MariaDB 暂时不支持数据归档功能。
03、方案及应用案例、产品选型介绍
第三部分是本次实践用到的方案和产品选型。
3.1 方案介绍
本次实践就是体现 RDS 通用云盘的三项能力,IO 加速,IO 突发和数据归档,这三项功能分两部分,一部分是体验性能,一部分是体验它的成本。首先它主要用到 RDS MySQL 通用云盘实例和 ECS 实例,用 ECS 对 RDS 进行压测,体验 IO 加速和 IO 突发两个功能带来的性能提升,并且用 DMS 执行 DDL,将数据归档到 OSS 里体验数据归档功能带来的成本优势。
3.2 方案涉及的产品选型
它的选型选用以 RDS MySQL 来进行实践,选用 RDS MySQL 8.0 高可用系列 8C16G,然后用200G 的通用硬盘,另外还用 ECS 8C32G,用 40G 的系统盘作为压测机。
3.3 汇联易实战:RDS 通用云盘助力突破性能瓶颈
介绍 RDS 通用云盘的客户实战,遇到业务高峰期,数据库查询压力激增,选择 RDS 通用云盘,打开 IO突发 后性能显著的提升。成本也获得比较大的收益。
04、线上活动与权益
最后介绍线上活动和权益。首先是数据库上云超值礼包抢先领,可以访问下面的链接,右边可以免费用 RDS MySQL 高可用版两核 16G50G 的存储,免费试用频道搜索云数据库 RDS MySQL。