Windows Server下PostgreSQL 14的pg_wal目录迁移问题
Windows Server下PostgreSQL 14 pg_wal目录迁移正确方案
错误原因分析
你之前的符号链接命令方向搞反了:mklink /D的语法是mklink /D [要创建的链接路径] [实际存储的目标文件夹路径],你把新目录(D:\pg_wal)作为链接,原目录(G:\Postgres-14\data\pg_wal)作为目标,相当于在D盘建了指向原G盘目录的快捷方式,PostgreSQL自然还是往原G盘目录写入日志。
正确迁移步骤
1. 停止PostgreSQL服务
必须先停止服务,避免pg_wal目录被占用:
net stop postgresql-x64-14
注:服务名称可能为postgresql-14,可在服务管理器中确认实际名称
2. 迁移原有日志文件并清理原目录
- 将
G:\Postgres-14\data\pg_wal下的所有文件移动到D:\pg_wal(如果D盘没有这个目录,先创建) - 删除原G盘的pg_wal目录:
rmdir "G:\Postgres-14\data\pg_wal"
3. 创建正确的符号链接
让PostgreSQL访问原路径时自动指向D盘的新目录,命令如下:
mklink /D "G:\Postgres-14\data\pg_wal" "D:\pg_wal"
4. 验证并启动服务
- 查看
G:\Postgres-14\data下的pg_wal,应显示为指向D:\pg_wal的符号链接 - 启动PostgreSQL服务:
net start postgresql-x64-14
额外排查点
- 操作时确保使用管理员权限打开命令提示符,否则mklink命令会执行失败
- 如果迁移后仍有问题,检查PostgreSQL日志(
G:\Postgres-14\data\pg_log),看是否有目录访问权限或链接无效的报错 - 确认D盘有足够的存储空间,避免因空间不足导致日志写入失败
内容的提问来源于stack exchange,提问作者Kenny
相关产品推荐
相关产品推荐

