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>