【发布时间】:2019-04-03 21:24:41
【问题描述】:
我有一个带有 2 个带流复制的热备用服务器的 postgresql 10 主数据库,并且复制工作正常。 synchronous_commit 设置为 remote_write
我还有一个配置了参数的 pgpool 3.7.5:
delay_threshold = 1
sr_check_period = 1
还有以下权重:
- 主人:1
- 节点1:3
- 节点2:3
在日志中我可以看到 node1 和 node2 滞后:
Replication of node:1 is behind 75016 bytes from the primary server (node:0)
pgpool docs 说:
delay_threshold(整数)
指定备用服务器上对主服务器的复制延迟的最大容忍级别(以 WAL 字节为单位)。如果延迟超过这个配置的级别,Pgpool-II 会停止向备用服务器发送 SELECT 查询,并开始将所有内容路由到主服务器,即使启用了 load_balance_mode,直到备用服务器赶上主服务器。将此参数设置为 0 将禁用延迟检查。此延迟阈值检查每 sr_check_period 执行一次。默认为 0。
问题在于 pgpool 在通过流式复制从 master 获取新数据之前向热备用发送查询。
我暂时启用了log_per_node_statement = on,以便能够查看查询执行的节点,并且我可以看到查询被发送到节点,即使delay_threshold 应该避免这种情况时没有同步。
我错过了什么吗?当节点落后于主节点时,查询不应该成为主节点吗?
提前致谢。
pgpool 的其他配置值为:
num_init_children = 120
max_pool = 3
connection_cache = off
load_balance_mode = on
master_slave_sub_mode = 'stream'
replication_mode = off
sr_check_period = 1
【问题讨论】:
标签: postgresql pgpool