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

PostgreSQL 14流复制启动失败:recovery.conf文件不支持报错

解决PostgreSQL 14流复制节点启动失败问题

核心原因

PostgreSQL 12及以后版本已废弃recovery.conf配置文件,原recovery.conf中的所有参数需迁移至postgresql.conf,并通过信号文件触发standby模式——这是你启动报错的直接原因。

具体修复步骤

1. 迁移配置并修正语法错误

  • 先备份原recovery.conf(防止误操作丢失配置):
    sudo cp /var/lib/postgresql/14/replica1/recovery.conf /var/lib/postgresql/14/replica1/recovery.conf.bak
    
  • 打开replica1实例的postgresql.conf,添加以下配置(注意修正primary_conninfo的语法错误:你原配置里host''/var/run/postgresql''漏写了等号):
    # 从原recovery.conf迁移的配置项
    restore_command = 'cp /var/lib/postgresql/pg_log_archive/replica1/%f %p' 
    recovery_target_timeline = 'latest'
    primary_conninfo = 'user=rep_user passfile=''/var/lib/postgresql/.pgpass'' host=''/var/run/postgresql'' port=5432 sslmode=prefer sslcompression=1 krbsrvname=postgres target_session_attrs=any'
    archive_cleanup_command = 'pg_archivecleanup /var/lib/postgresql/pg_log_archive/replica1 %r'
    # 补充standby模式必要配置(若postgresql.conf未设置)
    hot_standby = on
    
  • 删除原recovery.conf文件:
    sudo rm /var/lib/postgresql/14/replica1/recovery.conf
    

2. 创建standby信号文件

在replica1的数据目录下创建空的standby.signal文件,告知PostgreSQL当前节点为standby节点:

sudo touch /var/lib/postgresql/14/replica1/standby.signal

3. 修正文件权限

确保所有配置文件和信号文件的所属用户为postgres:

sudo chown -R postgres:postgres /var/lib/postgresql/14/replica1/

4. 重新启动服务

执行启动命令:

sudo pg_ctlcluster 14 replica1 start

启动后可通过以下命令验证状态:

sudo systemctl status postgresql@14-replica1.service
sudo pg_lsclusters

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:18:27