New replication mode: async, write, fsync, replay

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介:
PostgreSQL 9.1的同步复制事务需要等待同步复制节点的 xlog flush ACK 才可以结束事务(即等待xlog写入磁盘)。
而异步复制事务不需要standby的ACK。
在2012-01的commitFest中有一个关于新的复制模式的主题, 目前已经处于commited状态。
这个patch允许在standby节点的recovery.conf配置文件,加入了1个replication_mode参数,可选的参数值为,async, write, fsync, replay.
1. async
顾名思义代表这个standby是异步standby。
2. write
代表primary节点需要等待standby节点将接收到的xlog写入内存。
3. fsync
代表primary节点需要等待standby节点将接收到的xlog写入磁盘。
4. replay
代表primary节点需要等待standby节点将接收到的xlog完成恢复。
在write, fsync, replay模式下面,standby增加了一个XLogRecPtr消息,分别用来发送当前已经写入内存,磁盘,或完成恢复的location。
 只有当primary接收到的XLogRecPtr中的location大于主节点正在等待的COMMIT location时,才可返回success给客户端。

还记不记得9.1的同步复制同一时刻只支持一台节点成为sync standby节点,其他的都是异步复制节点。
所以又有一个patch是关于quorum的。
在主节点的postgresql.conf参数中增加了一个quorum参数,默认等于0。记录的是需要收到ACK的STANDBY节点个数。
当系统中存在多个sync standby节点时,主节点必须接收到大于或等于quorum配置的个数个sync standby节点的replication ACK,事务才可返回给客户端success消息。
quorum个数大于当前系统中sync standby个数时以sync standby个数为准。
系统中没有sync standby节点但是配置的quorum>0时不受影响。

【小结】
1. 由于write模式返回的是xlog写入内存的位置,比flush到磁盘快很多,因此带来同步复制的性能增强,当然也带来了少许风险,如主节点和sync standby节点同时DOWN机是有风险的。
性能提升如下 : 
synchronous_commit = on
tps = 424.510843 (including connections establishing)
tps = 420.767883 (including connections establishing)
tps = 419.715658 (including connections establishing)
tps = 428.810001 (including connections establishing)
tps = 337.341445 (including connections establishing)

synchronous_commit = write
tps = 550.752712 (including connections establishing)
tps = 407.104036 (including connections establishing)
tps = 455.576190 (including connections establishing)
tps = 453.548672 (including connections establishing)
tps = 555.171325 (including connections establishing)

2. quorum 参数降低了上面提到的风险问题,因为可以允许多个同步复制standby节点。

【参考】
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
机器学习/深度学习 存储 弹性计算
云服务器ECS共享标准型S6全新发布,行业内最具性价比
近日,阿里云弹性计算发布全新一代云服务ECS共享标准型S6,性能相对上一代实例提升15%以上,价格相对上一代最高降低42%,是目前国内云计算厂商更能够提供的最具性价比的云服务器产品。一些中小型网站、轻量数据库以及轻量企业应用的客户在阿里云有更多的产品选择,也是个人开发者和小企业的首选。
11813 0
云服务器ECS共享标准型S6全新发布,行业内最具性价比
|
Web App开发 搜索推荐 SEO
《SEO的艺术(原书第2版)》——1.6 搜索引擎怎样驱动网络商务
本节书摘来自华章计算机《SEO的艺术(原书第2版)》一书中的第1章,第1.6节,作者:(美)恩吉(Enge, E.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1242 0
|
5天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!