使用pgBackRest 2.38进行PostgreSQL 13时间点恢复后数据库无法启动
PostgreSQL 13时间点恢复后pgBackRest启动失败的排查与解决
核心报错分析
从日志可定位两个关键问题:
- 认证超时导致连接中断:
FATAL: canceling authentication due to timeout - 数据目录存在锁文件,提示已有Postmaster进程(PID 40)运行:
FATAL: lock file "postmaster.pid" already exists
分步解决步骤
1. 清理残留进程与锁文件
- 检查PID 40是否存活:
ps -ef | grep 40 | grep -v grep - 若进程存在,强制终止:
kill -9 40 - 删除数据目录下的锁文件:
注意:删除前务必确认进程已完全终止,防止数据损坏rm -f /pgdata/pg13/postmaster.pid
2. 修复认证超时问题
认证超时多因恢复后pg_hba.conf配置异常或认证参数不合理:
- 临时调整
pg_hba.conf,允许本地信任连接(恢复完成后需改回安全配置):
在文件中添加/修改:local all all trust host all all 127.0.0.1/32 trust - 调整
postgresql.conf的认证超时参数:
将默认60s临时调至120s:authentication_timeout = 120s
3. 重新启动与验证
- 手动启动PostgreSQL:
pg_ctl start -D /pgdata/pg13 - 验证恢复状态:
psql -c "SELECT now();" psql -c "SELECT * FROM pg_stat_activity;"
4. 恢复安全配置
启动验证完成后,将pg_hba.conf还原为原有安全规则,同时把authentication_timeout调回默认值(若无需长期修改)。
内容的提问来源于stack exchange,提问作者jobin george
相关产品推荐
相关产品推荐

