确保这不会成为问题的最简单方法是将备用数据库上的这些参数设置为等于或大于主数据库上的值
例如,当我将参数max_connections 从 300 减少到 200 时,首先我减少发布者,然后在订阅者中执行相同的操作以避免上述问题。
在这里,我发现,如果我们立即在订阅者中执行此操作(例如在发布者中更新后 2 秒内),就会遇到以下问题:
hot standby is not possible because max_connections = 200 is a lower setting than on the master server (its value was 300)
发布者中的配置更新更改似乎未传输/订阅者仍然不知道发布者中的更新。所以我引入了一个延迟,例如:replication_lag + 2秒(不确定,是否正确)。现在一切正常了。
所以我的问题是:
PS:更新1:
pg_settings
表验证了发布者已更新为新值 (200)。
max_connections
只能在服务器重新启动时更改。当服务器启动时,在完成崩溃恢复(如果有)之后,它将写入包含当前
max_connections
设置的 WAL 记录。一旦备用服务器收到并重播该记录,它就会知道新设置,您可以更改备用服务器上的参数。所以你可以遵循这样的程序:
上获取
pg_current_wal_lsn()
的结果
轮询
pg_stat_replication
,直到备用数据库的 replay_lsn
达到或超过该日志序列号
在备用机上更改参数并重新启动