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
相关产品推荐
相关产品推荐

