hi,我们有2个patroni节点和3个etcd节点,目前,我们在复制节点SYNCHRONOUS_COMMIT=on和synchronous_standby_name = ' node2 '之间配置了同步复制,我们打算在回调或其他参数下将复制更改为异步,需要帮助,我们如何实现这一需求
雷竞技下载官网Percona 14.6
RHEL 8
你好@MRizwanShaukat您可以使用参数“synchronous_mode”、“synchronous_commit”、“synchronous_standby_names”,而patroni将负责备用名称。例如:
Bootstrap: dcs: ttl: 30 maximum_lag_on_failover: 1048576 synchronous_mode: on postgresql: use_pg_rewind: true use_slots: true parameters: wal_level: replica hot_standby: on synchronous_commit: on synchronous_standby_names: "*"
请注意,在下面的例子中,我正在使用synchronous_standby_names:“*”这样Patroni将负责备用名称。在这个例子中,我有一个有3个节点(node1、node2、node3)的设置,node1是主节点。如果我检查参数,我得到:
Test => show synchronous_standby_names;- - - - - -[记录1 ]-------------+------------ synchronous_standby_names |“node2”(1行)root@lab-node2: ~ # patronictl - c雷竞技下载官网 / percona / config / patroni。yml列表+集群:cluster_1 (7208383656948843317 ) --------+----+-----------+ | 员| TL | | | |主机角色状态滞后MB | +-----------+-------------+--------------+---------+----+-----------+ | node1 | 10.0.100.13 | |领袖运行| 1 | | | node2 | 10.0.100.11 |同步运行备用| | 1 | 0 | | node3 | 10.0.100.6 | | | 1 | 0运行复制品 | +-----------+-------------+--------------+---------+----+-----------+
如果我让node2崩溃,我会得到:
Test => show synchronous_standby_names;synchronous_standby_names --------------------------- " node3”(1行)root@lab-node2: ~ # patronictl - c /雷竞技下载官网 percona / config / patroni。yml列表+集群:cluster_1 (7208383656948843317 ) --------+----+-----------+ | 员| TL | | | |主机角色状态滞后MB | +-----------+-------------+--------------+---------+----+-----------+ | node1 | 10.0.100.13 | |领袖运行| 1 | | | node3 | 10.0.100.6 |同步运行备用| | 1 | 0 | +-----------+-------------+--------------+---------+----+-----------+
正如我们所看到的,守护神搞定了同步备用。
现在,在我丢失所有节点的情况下(在这个例子中,我使用了比PG节点更多的ETCD服务器,以便能够只有一个PG节点作为领导者运行)Patroni将清空配置:
Test => show synchronous_standby_names;synchronous_standby_names --------------------------- ( 1行)测试= >选择pg_is_in_recovery ();Pg_is_in_recovery ------------------- f(1行)test=> insert into t1 select from generate_series(1,1000);INSERT 0 1000 root@lab-node2:~# patronictl -c /雷竞技下载官网percona/config/patroni。yml列表+集群:cluster_1 (7208383656948843317 ) --+----+-----------+ | 员| TL | | | |主机角色状态滞后MB | +-----------+-------------+--------+---------+----+-----------+ | node1 | 10.0.100.13领导人| | | 1运行 | | +-----------+-------------+--------+---------+----+-----------+
我的主服务器仍在运行和响应,就好像它没有使用同步副本一样。
请注意,我没有使用" synchronous_mode_strict "因为该参数可以防止Patroni在没有同步备用候选服务器时关闭主服务器上的同步复制。
你可以在Patroni的文档这里[1]找到更多信息。
希望这能有所帮助。
查理
[1]复制模式- Patroni 3.0.1文档
1像
谢谢你的回复,@Charly_Batista它像预期的那样工作
嗨,我们配置了“*”,它不能自动获得synchronous_standby_names,我们需要在这个参数中指定备用名称,然后它只显示SYCN standby…灾难,它不会自动更改备用参数,任何想法请
你好,
你能分享一下你的配置吗?你可以使用下面的命令获取它:
Patronictl -c edit-config
我们在所有节点上指定这些参数,它不会自动改变状态为“同步备用”,即使synchronous_standby_names也不会自动选择节点名称,例如节点2或节点3,在节点2失败时,它也不会改变值。
loop_wait: 10
master_start_timeout: 300
maximum_lag_on_failover: 1048576
postgresql:
参数:
hot_standby:‘上’
max_replication_slots: 10
max_wal_senders: 10
synchronous_commit:‘上’
synchronous_standby_names:‘*’
wal_keep_segments: 8
wal_level:副本
use_pg_rewind:真
use_slots:真
retry_timeout: 10
槽:
雷竞技下载官网percona_3nodes_replication_slot:
类型:物理
synchronous_mode:‘上’
ttl: 30