博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
New replication mode: async, write, fsync, replay
阅读量:7052 次
发布时间:2019-06-28

本文共 1680 字,大约阅读时间需要 5 分钟。

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节点。

【参考】
 

转载地址:http://mhvol.baihongyu.com/

你可能感兴趣的文章
Python数值和字符串
查看>>
python学习笔记一
查看>>
Gym 100283F Bakkar In The Army
查看>>
POJ 2947 2947 Widget Factory 高斯消元
查看>>
ExtJS-3.4.0系列:Ext.TabPanel
查看>>
Sql Server系列:键和约束
查看>>
服务器负载感知的URL HASH
查看>>
java xml操作
查看>>
关于Android SDK无法正常下载
查看>>
LVS-DR演示
查看>>
硬件要求
查看>>
基本数据类型
查看>>
我的友情链接
查看>>
设置cpu亲和性---即 绑定特定的进程线程到指定的cpu
查看>>
Java 的强引用、弱引用、软引用、虚引用
查看>>
zabbix性能简单调优
查看>>
CSS 详细解读定位属性 position 以及参数
查看>>
ed 命令 cat 命令
查看>>
想想你,幸福和快乐就来了
查看>>
html base标签 target=_parent使用介绍
查看>>