postgresql 9.6 在可靠性方面再出杀手锏。
通过流复制功能增强,提供多种可靠性模式可供用户根据需求进行选择,在可靠性和性能方面用户可以自由发挥。
最强模式满足金融级的可靠性要求。
如何做到的呢?
pg允许多个同步流复制standby节点,用户在事务提交时,需要等待多个同步的standby apply xlog,从而保证数据的多副本一致性。
具体的增强如下
.1. 事务提交保护级别增强如下
支持5个事务提交保护级别,确保事务提交时,xlog的几种状态。
synchronous_commit =
on, remote_apply, remote_write, local, off
on 表示本地事务产生的xlog已flush到磁盘,同时sync standby(s)的xlog也已flush到磁盘。
remote_apply, 表示本地事务产生的xlog已flush到磁盘,同时sync standby(s)的xlog已回放。
remote_write, 表示本地事务产生的xlog已flush到磁盘,同时sync standby(s)的xlog 已write到os dirty page。
local, 表示本地事务产生的xlog已flush到磁盘。
off, 表示
.2. 同步流复制保护级别增强
支持设置同步节点数,例如用户有4个standby,包含主节点共5个副本。
用户要求3副本一致,则num_sync设置为2即可,确保至少有2个standby与主节点一致。
synchronous_standby_names参数配置的两种写法:
num_sync为同步standby节点数, 以及standby name.
num_sync ( standby_name [, ...] )
未设置保护的standby节点数, 则默认为1个同步standby.
standby_name [, ...]
<a href="http://www.postgresql.org/docs/9.6/static/runtime-config-replication.html#guc-synchronous-standby-names">http://www.postgresql.org/docs/9.6/static/runtime-config-replication.html#guc-synchronous-standby-names</a>
<a href="http://www.postgresql.org/docs/9.6/static/runtime-config-wal.html#guc-wal-level">http://www.postgresql.org/docs/9.6/static/runtime-config-wal.html#guc-wal-level</a>