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

恢复PostgreSQL 15.5(Ubuntu Linux)后时间线未变更的原因排查

问题背景

配置参数:

wal_level = logical
archive_mode = on       # enables archiving; off, on, or always
archive_command = 'test ! -f /home/15arc/%f && cp %p /home/15arc/%f'        # command to use to archive a logfile segment

执行备份操作:

./pg_basebackup -D /home/backup  -Ft -p 5415 -P -U postgres

恢复操作流程:

  1. 删除PostgreSQL集群数据目录/home/postgres15下的所有数据
  2. 将备份生成的tar文件解压到该目录
  3. 启动数据库:
./pg_ctl -D /home/postgres15  start

启动后未生成时间线历史文件,原因是什么?

原因分析

时间线历史文件(如00000002.history这类命名的文件)只有在数据库发生时间线切换时才会自动生成,你的操作流程并没有触发时间线切换的场景:

  • pg_basebackup生成的是集群的一致性基础备份,备份中包含了当前集群的时间线ID及所有必要元数据
  • 直接将备份解压到原数据目录启动时,数据库会沿用备份时的时间线ID正常启动,没有触发时间线切换的需求

只有当以下场景发生时,才会生成时间线历史文件:

  • 原集群曾经历崩溃恢复,且恢复过程中创建了新的时间线(比如原集群崩溃后,未完成WAL归档就启动,会推进时间线)
  • 恢复备份后使用pg_resetwal工具修改了时间线ID
  • 恢复过程中通过recovery_target_timeline参数指定了不同于备份的目标时间线
  • 备份本身来自已发生时间线切换的集群,且恢复时需要处理时间线分支

你的操作是标准的基础备份恢复流程,没有触发时间线切换,所以不会生成新的时间线历史文件,这是完全正常的行为。


内容的提问来源于stack exchange,提问作者Эльфия Валиева

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:00:55