《PostgreSQL17 在 openEuler2403 中的数据目录迁移:安全转移数据库文件》
通过以上步骤,可在保证数据一致性的前提下完成安全迁移。如遇服务启动失败,请检查 SELinux 上下文(选择目标位置(如新磁盘。
·
PostgreSQL 17 在 openEuler 2403 中的数据目录迁移指南
迁移数据目录需谨慎操作,以下是安全转移数据库文件的分步流程:
步骤1:停止 PostgreSQL 服务
确保数据库完全停止,避免文件损坏:
sudo systemctl stop postgresql-17
步骤2:确认当前数据目录
查询现有数据目录位置:
sudo -u postgres psql -c "SHOW data_directory;"
记录输出路径(如 /var/lib/pgsql/17/data)
步骤3:创建新数据目录
选择目标位置(如新磁盘 /mnt/pgdata),创建目录并设置权限:
sudo mkdir -p /mnt/pgdata
sudo chown postgres:postgres /mnt/pgdata
sudo chmod 700 /mnt/pgdata # 仅允许postgres用户访问
步骤4:复制数据文件
使用 rsync 保留权限和属性:
sudo rsync -avzh /var/lib/pgsql/17/data/ /mnt/pgdata/
关键参数:
-a:归档模式(保留权限、属性)-z:压缩传输-h:人类可读格式- 源路径末尾的
/确保复制内容而非目录本身
步骤5:修改配置文件
- 编辑 PostgreSQL 主配置:
sudo vi /usr/pgsql-17/share/postgresql.conf.sample - 更新
data_directory参数:data_directory = '/mnt/pgdata'
步骤6:更新 systemd 服务单元
修改服务文件以指向新路径:
sudo vi /usr/lib/systemd/system/postgresql-17.service
找到 Environment=PGDATA 并更新:
Environment=PGDATA=/mnt/pgdata
步骤7:重载配置并启动服务
sudo systemctl daemon-reload
sudo systemctl start postgresql-17
步骤8:验证迁移
- 检查服务状态:
sudo systemctl status postgresql-17 - 确认数据目录:
sudo -u postgres psql -c "SHOW data_directory;" - 测试数据完整性:
sudo -u postgres psql -c "\l"
关键注意事项
- 备份优先:
sudo pg_basebackup -D /backup/pg17 -Ft -z - 空间要求:目标位置需满足 $$ \text{目标空间} \geq 1.5 \times \text{当前数据大小} $$
- 日志监控:迁移后检查日志:
journalctl -u postgresql-17 -n 100
通过以上步骤,可在保证数据一致性的前提下完成安全迁移。如遇服务启动失败,请检查 SELinux 上下文(
restorecon -Rv /mnt/pgdata)或磁盘挂载权限。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐



所有评论(0)