You need to enable JavaScript to run this app. 如何将PostgreSQL 13数据库的存储位置迁移至其他磁盘
优惠活动
大模型
产品
解决方案
定价
更多

如何将PostgreSQL 13数据库的存储位置迁移至其他磁盘

PostgreSQL 13 数据目录迁移解决方案

前提准备

  • 提前将新磁盘挂载到目标路径,务必将挂载配置写入/etc/fstab,避免系统重启后挂载丢失
  • 操作前做好现有数据库全量备份,避免数据丢失

操作步骤

  1. 停止PostgreSQL 13服务
    根据你的发行版执行对应命令:
    • RHEL/CentOS/Fedora系:sudo systemctl stop postgresql-13.service
    • Debian/Ubuntu系:sudo systemctl stop postgresql@13-main.service
  2. 完整复制原数据目录到新路径
    用rsync命令复制,保留所有文件权限、属主属性:
    sudo rsync -av /var/lib/pgsql/13/data /你的新磁盘目标路径/
    
    如果新路径下你想修改目录名也可以,只要保证后续配置的路径对应即可
  3. 验证新目录权限
    PostgreSQL要求数据目录属主为postgres用户,且权限为700,执行以下命令修正:
    sudo chown -R postgres:postgres /你的新磁盘目标路径/data
    sudo chmod 700 /你的新磁盘目标路径/data
    
  4. 备份原数据目录(不要直接删除,方便回滚)
    sudo mv /var/lib/pgsql/13/data /var/lib/pgsql/13/data.bak
    
  5. 修改PostgreSQL启动时读取的数据目录路径
    这是之前迁移失败的核心原因,服务启动时默认会读取旧路径的data目录,需要修改启动配置:
    • RHEL/CentOS/Fedora系:
      编辑systemd服务配置文件/usr/lib/systemd/system/postgresql-13.service,找到Environment=PGDATA行,将路径修改为新的data目录路径:
      Environment=PGDATA=/你的新磁盘目标路径/data
      
      修改完成后执行重载systemd配置:
      sudo systemctl daemon-reload
      
    • Debian/Ubuntu系:
      编辑/etc/postgresql/13/main/postgresql.conf,找到data_directory配置项,修改为新的data目录路径即可。
  6. 启动PostgreSQL服务
    对应发行版执行启动命令:
    • RHEL/CentOS/Fedora系:sudo systemctl start postgresql-13.service
    • Debian/Ubuntu系:sudo systemctl start postgresql@13-main.service
  7. 验证迁移结果
    登录PostgreSQL执行以下命令,确认返回路径为新的data目录路径即迁移成功:
    SHOW data_directory;
    
    确认业务数据无异常后,可自行删除原备份的data.bak目录释放磁盘空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 19:36:07