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

Windows 10下PostgreSQL 14.5含表空间的集群恢复方法

Windows 10下PostgreSQL 14.5带表空间的basebackup恢复流程

前置准备

  • 停止目标机器上的PostgreSQL 14服务,可通过服务管理器或命令行执行:net stop postgresql-x64-14
  • 若为全新恢复,清空目标集群的数据目录(默认路径如C:\Program Files\PostgreSQL\14\data);若覆盖现有集群,提前做好数据备份

1. 恢复基础集群文件

将base.tar解压到目标集群的数据目录下,确保解压后目录结构与原集群一致(数据目录下直接出现global、pg_commit_ts等核心文件夹)

2. 确定表空间对应路径

方式一:查看备份清单backup_manifest

打开backup_manifest文件,找到OID为21511、21512的表空间条目,其中包含原集群中该表空间的物理路径,示例条目如下:

"tablespaces": [
{
"oid": 21511,
"name": "data_tblspc",
"location": "D:\pg_tblspaces\data",
"tar_file": "21511.tar"
},
...
]

方式二:原集群查询(原集群可访问时)

连接原集群执行SQL:

SELECT oid, spcname, spclocation FROM pg_tablespace;

根据OID(21511、21512)找到对应的spclocation路径

3. 恢复表空间文件

  • 在目标机器上创建与原路径完全一致的目录(例如原路径为D:\pg_tblspaces\data,目标机器必须创建相同路径)
  • 给目录分配权限:添加PostgreSQL服务账号(默认是NT SERVICE\postgresql-x64-14),赋予其完全控制权限
  • 将对应OID的tar文件解压到各自目录中,确保解压后目录下直接出现表空间核心文件(如PG_14_202107181文件夹)

4. 恢复WAL日志

将pg_wal.tar解压到目标集群数据目录下的pg_wal子文件夹中,覆盖原有文件(若存在)

5. 触发恢复流程

在目标集群的数据目录下创建空文件recovery.signal(无扩展名),PostgreSQL启动时会识别该文件并执行恢复操作

6. 启动服务并验证

  • 启动PostgreSQL服务:net start postgresql-x64-14
  • 连接数据库验证:
    1. 执行SELECT oid, spcname, spclocation FROM pg_tablespace;确认表空间路径正确
    2. 查询对应表空间中的表和索引,验证数据完整性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:15:36