一 背景
AnalyticDB PostgreSQL版(简称ADB PG)是阿里云数据库团队基于PostgreSQL内核(简称PG)打造的一款云原生数据仓库产品。在数据实时交互式分析、HTAP、ETL、BI报表生成等业务场景,ADB PG都有着独特的技术优势。
对于离线报表分析等公有云典型场景,可用性要求不高,因此ADB PG推出了单副本形态,降低一半存储成本的同时提升了IO性能,大幅提升了性价比。
二 简介
ADB PG高可用版实例采用双副本模式,部署结构如下:
基础版实例相比高可用版实例,master和segment均采用单节点部署,即省略了上图中master node的副本standby node,和所有compute node中primary节点的副本mirror。这样做一方面在compute node上节约了一半的存储空间,并且直接节省了standby node;另一方面,省略了primary和mirror的同步过程,提升了写入场景下的IO能力:
三 对比
成本优势
基础版成本优势主要体现在两方面:第一是相同规格下,节省了一个副本的存储空间,降低了50%的存储成本;另一方面,计算节点在相同算力下降低了价格。
存储价格 |
计算节点价格 |
总价格 |
|||||||
基础版 |
高可用版 |
价格下降 |
基础版 |
高可用版 |
价格下降 |
基础版 |
高可用版 |
价格下降 |
|
入门配置价格 |
100元/月 |
400元/月 |
75% |
765元/月 |
1756.3元/月 |
56.44% |
865元/月 |
2156.3元/月 |
59.88% |
常用配置价格 |
400元/月 |
800元/月 |
50% |
2910元/月 |
3463.96元/月 |
15.99% |
3310元/月 |
4263.96元/月 |
22.37% |
入门配置为所能购买的最低配置,基础版为2C 50G 2计算节点,高可用版为2C 50G 4计算节点。相比高可用版,基础版的入门价格降低了59%。
常用配置下,基础版和高可用版均为为4C 100G 4节点。相比高可用版,配置相同的情况下,价格降低了22%。
性能优势
基础版(单副本)相比高可用版(双副本),IO性能有比较明显的提升,2C规格下,最高可达到原有相同规格集群的2.5倍;此外,在含有大量数据写入的场景下,基础版节省了向副本进行数据同步和流复制的过程,这种场景下又有额外的接近1倍的IO提升。
对计算节点规格均为2C,节点存储均为400G的基础版和高可用版集群进行以下测试:
- 大小约为90G的行存表进行本地复制测试:
create table lineitem2 as (select * from lineitem);
基础版(单副本) |
高可用版(双副本) |
|
用时(s) |
249 |
1307 |
本地表CTAS,INSERT INTO SELECT,这类IO密集型场景,提升十分明显,上述场景有5倍性能提升。
- TPC-H测试
TPC-H 测试是数据仓库最常用的基准测试之一,包括 22 个SQL(Q1~Q22),主要评价指标是各个查询的执行时间
。在计算节点规格均为2C,计算节点存储均为400G,计算节点个数均为4的情况下,对基础版和高可用版进行数据集总大小为100G的TPC-H数据集进行基准测试,结果如下(单位:s):
SQL |
高可用版(双副本) |
基础版(单副本) |
1 |
201 |
108 |
2 |
42 |
36 |
3 |
286 |
182 |
4 |
280 |
212 |
5 |
285 |
163 |
6 |
201 |
78 |
7 |
260 |
192 |
8 |
320 |
152 |
9 |
284 |
175 |
10 |
238 |
162 |
11 |
27 |
20 |
12 |
228 |
111 |
13 |
61 |
67 |
14 |
212 |
92 |
15 |
202 |
79 |
16 |
52 |
43 |
17.1 |
667 |
478 |
17.2 |
345 |
170 |
18 |
413 |
213 |
19 |
172 |
71 |
20 |
217 |
163 |
21 |
645 |
413 |
22 |
73 |
70 |
sum |
5713 |
3450 |
可以看到由于IO性能的提升,相比于高可用版,基础版的TPCH基准测试用时降低了40%。
可用性
数据可靠性
ADB PG可保证99.99999999%的数据可靠性,即使发生计算节点宕机,也可保证无数据丢失。ADB PG使用阿里云ESSD云盘作为存储介质,ESSD云盘自身采用了三副本技术,故可保证即使在单副本模式下,依然提供超高的数据可靠性,为客户的数据保驾护航。
高可用
WAL和checkpoint
ADB PG中,事务的每次修改数据的操作都必须首先被记录至WAL(Write Ahead Log)文件中。即每次事务提交时,会保证WAL日志已落盘。当数据库需要恢复数据时,可以通过回放WAL日志的方法来恢复已经提交但是尚未写入磁盘的数据库的数据更改。
checkpoint相当于在WAL日志中写入的一个恢复点标记,并将该标记之前的修改全部落盘。数据库恢复数据时,只需要回放到最近一次恢复点即可。ADB PG会定期执行checkpoint操作;当WAL日志过长时,也会自动执行checkpoint进行落盘。
Recovery模式
SQL崩溃时,主要是出现coredump或者out of memory等情况,会使ADB PG集群进入recovery模式,recovery模式中,会对残留的锁,内存等执行一些清理工作,并通过回放WAL文件来保证数据的完整性。Recovery期间,集群会暂时无法服务;完成recovery之后,集群会恢复正常。高可用版实例recovery时间大多在5-10min,而基础版实例通过更改checkpoint机制等方式,recovery的时间可缩短至10s左右。
计算节点宕机
基础版实例省略了一个副本,必然带来可用性的下降。高可用版的某个计算节点宕机之后,会立刻无缝切换对应副本,集群可以正常运行,宕机的计算节点的角色会切换为副本,在后台被自动重启;而基础版实例单个节点宕机会导致整个集群不可用,必须重启整个集群恢复。
计算节点宿主机宕机
计算节点宿主机宕机属于比较少见的极端情况,会触发宿主机的自动迁移。对于高可用版实例,仍然可以触发副本自动切换,集群可以正常运行,同时后台自动完成宿主机的迁移;基础版实例则需要等待宿主机迁移成功后,再重启恢复集群,这个等待时间一般在15min左右。
总结
ADB PG基础版由于省略了一个副本,在高可用方面出现了一些下降,在物理机宕机等极端情况下,集群恢复的时间变长。但通过ESSD多副本技术,仍保留了完整的数据可靠性,并且通过更改checkpoint机制的方式,减少了recovery的时间。根据以往公共云运行情况,recovery模式为出现概率最大的场景(远大于另外两个场景),而该场景下基础版恢复速度当前要由于高可用版。
四 开通基础版实例
可选地域
目前只有北京可用区I,杭州可用区J,上海可用区L,深圳可用区F,新加坡可用区C可以开通基础版实例,即控制台上标有“荐”的地域.
创建/选择VPC
如果在已选可用区已经有可用的VPC和交换机,此处会自动选择;如果点击右侧的刷新按钮后仍然没有自动选择,则代表此可用区无可用的VPC或交换机,需要重新创建。创建方法与高可用版完全相同,可参考阿里云官方帮助文档:使用专有网络
选择实例规格
各个选项的含义如下,除实例系列外,其余选项的含义基础版和高可用版均完全相同。实例系列选择“基础版”,其余选项按需选择:
实例系列 |
基础版为单副本实例,高可用版为双副本实例 |
节点数量(master) |
购买实例对应的master数量,最小单位为1。 |
节点规格(segment) |
计算资源单位,不同的计算组规格有不同的内存大小和计算能力. |
节点数量(segment) |
所购买的“节点”数量,基础版最小单位为2个,高可用版最小单位为4个,节点个数的增加可以线性地提升性能。 |
选择存储容量
节点存储容量代表实例中每个节点独享的存储空间大小。
付费
下方购买时长(按量付费没有这一栏)选择想要购买的时长(时长越长,优惠越大!),总配置费用一栏会显示当前配置的费用,确认后点击右下角的立即购买,即可享受到基础版实例的高性价比了!
五 总结
基础版单副本实例以牺牲部分特定场景(宿主机宕机)可用性为代价,提供了较低的入门门槛,购买成本,和较高的IO能力,在可用性要求不高的场景是一个极佳的选择。未来ADB PG将持续深耕性价比,提高用户使用体验。