天天看点

PostgreSQL 9.6 攻克金融级多副本可靠性问题

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>

继续阅读