You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何降低PostgreSQL集群的max_connections参数值?

报错根本原因

hot standby is not possible because max_connections = 100 is a lower setting than on the master server (its value was 300)

PostgreSQL热备架构要求副本节点的max_connections参数值必须大于等于主节点生成当前回放WAL日志时的max_connections值。你先重启了主节点完成参数下调,此时副本节点待回放的WAL日志里仍包含主节点max_connections=300时期生成的内容,因此副本的100不符合要求,启动失败。


其他可行解决方案

  • 调整参数变更的操作顺序(推荐方案)
    下调max_connections这类热备强校验参数时,需要遵循「先副后主,再更新副本」的步骤:

    1. 先将所有副本节点的max_connections调整为大于当前主节点值的配置(比如350),依次重启所有副本
    2. 修改主节点max_connections为100,重启主节点
    3. 再将所有副本节点的max_connections调整为100,依次重启副本即可
      全程副本的max_connections始终大于等于对应阶段主节点的参数值,不会触发校验错误。
  • 等待旧WAL回放完成后再开启热备
    如果你已经完成主节点重启,不想回滚主节点配置,可以按以下步骤操作:

    1. 先设置副本hot_standby=off启动,此时副本仅做WAL回放,不提供读服务,不会触发max_connections校验
    2. 等待副本完全追上主节点的WAL同步位置(可通过pg_stat_replication视图查看同步状态),此时副本回放的所有WAL均为主节点max_connections=100之后生成的内容
    3. 重新修改副本配置将hot_standby改回on,重启副本即可正常启动热备。
  • 重新生成副本的基础备份
    若副本数据量不大、重新备份成本低,可直接在主节点参数调整完成并正常运行后,为所有副本重新做一次基础备份,使用新备份启动的副本天然适配主节点当前的max_connections配置,不会触发校验报错。


补充注意

除max_connections外,max_prepared_transactions、max_locks_per_transaction、max_worker_processes这几个参数也遵循相同的热备校验规则,调整时需要遵守同样的操作顺序。

内容的提问来源于stack exchange,提问作者Emon46

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 05:36:11