synchronous_standby_names
语法
[FIRST] num_sync ( standby_name [, ...] )
ANY num_sync ( standby_name [, ...] )
standby_name [, ...]
从上面的语法可以看出,可能的使用方式如下:
synchronous_standby_names ="2 (s1,s2,s3)"
synchronous_standby_names ="FIRST 2 (s1,s2,s3)"
synchronous_standby_names ="ANY 2 (s1,s2,s3)"
synchronous_standby_names ="s1,s2,s3"
其中前两种配置效果一样。
PostgreSQL版本 9.6 之前使用过第三种语法,目前也仍然支持。它和FIRST和num_sync等于1的第一种语法相同。例如,FIRST 1 (s1, s2)和s1, s2具有相同的含义:s1或者s2会被选中作为同步后备服务器。
牛逼的来了
synchronous_standby_names ="*"
synchronous_standby_names ="FIRST 2 (*)"
synchronous_standby_names ="ANY 2 (*)"
特殊项*匹配任意后备名称。如果 synchronous_standby_names 设置成 * 的具体表现为,pg_stat_replication 表中的 sync_state 字段,其中一个 standy 节点的 sync_state 为 sync,剩下的都是 potential;
synchronous_standby_names =“FIRST 2 (*)”,所有流复制链接到此主节点的 standy 节点中,两个是sync状态,剩下的都是potential状态;
synchronous_standby_names =“ANY 2 (*)”,所有流复制链接到此主节点的 standy 节点都是quorum状态。
pg_stat_replication 表中的 sync_state 字段的状态:
http://postgres.cn/docs/12/warm-standby.html#SYNCHRONOUS-REPLICATION
http://postgres.cn/docs/12/runtime-config-replication.html