首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【postgres】postgres 数据库迁移

【postgres】postgres 数据库迁移

作者头像
master336
发布2026-06-15 19:19:48
发布2026-06-15 19:19:48
1080
举报
目录
  • 环境说明
  • 备份
    • 数据备份
    • 文件备份
  • 迁移方案一:数据文件迁移
    • 迁移数据文件
    • 修改服务种数据文件位置
  • 迁移方案二:数据还原法
    • 上传数据备份文件
    • 使用psql还原
  • 常见问题及解决办法
    • 权限过大问题
    • 目录错误或权限不足问题

环境说明

本内容基于如下环境完成测试

配置说明

备注

操作系统

CentOS7

PG数据版本

9.6.24

操作系统用户

root/postgres

数据量

用户(20)、角色(20)、数据库(2)、schema(42)、数据量(约160W行)

数据文件约640M

备份

数据备份
代码语言:javascript
复制
#创建备份存放文件夹(确保postgres用户有权限)
cd /home
mkdir posrgres
chown -R postgres postgres/
#切换postgres用户
su - posrgres
#执行备份
pg_dumpall -U postgres -v -f u_postgres.backup
文件备份

数据文件默认位置:/var/lib/pgsql/9.6

代码语言:javascript
复制
#切换到数据存放位置
cd /var/lib/pgsql/9.6
#停止数据库服务
systemctl stop postgresql-9.6
#压缩数据文件
tar -cvf data.tar.gz data/
#得到的 data.tar.gz 即为压缩后的数据备份文件

迁移方案一:数据文件迁移

迁移数据文件

此过程需要先行停止pg数据库 完成执行文件备份

代码语言:javascript
复制
#确保过程种服务是停止的
systemctl stop postgresql-9.6
cd /home
#创建迁移目录 并修改权限
mkdir pgdata
##修改归属
chown -R postgres pgdata/
##修改权限(必须)
chmod 700 pgdata/
#切换至pg用户
 su - postgres
#复制数据文件到新位置
cp -rf data/* /home/pgdata/
修改服务种数据文件位置
代码语言:javascript
复制
#编辑服务配置文件
vim  /usr/lib/systemd/system/postgresql-9.6.service
#修改配置文件种的数据文件路径
修改:Environment=PGDATA=/var/lib/pgsql/9.6/data/
为:Environment=PGDATA=/home/pgdata/
#保存退出
#重启系统
reboot
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NzbxucV4-1655303214806)(file://C:\Users\dongz\AppData\Roaming\marktext\images\2022-06-15-21-21-41-image.png?msec=1655299475495)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NzbxucV4-1655303214806)(file://C:\Users\dongz\AppData\Roaming\marktext\images\2022-06-15-21-21-41-image.png?msec=1655299475495)]

迁移方案二:数据还原法

此方案基于pg数据库对备份还原的支持,使用此方法强烈建议在同版本的数据库上操作 数据备份参见**【数据备份】**章节

上传数据备份文件
代码语言:javascript
复制
#创建备份文件存放位置
cd /home
mkdir postgres
#上传备份文件到上一步的存放位置(上传过程省略)
mv u_postgres.backup postgres/
#修改权限
chown -R postgres postgres/
使用psql还原
代码语言:javascript
复制
#切换用户
su - postgres
#切换数据备份目录
cd /home/postgres/
#执行恢复(忽略错误,"postgres"内置角色原因)
psql -U postgres  -f u_postgres.backup
#执行恢复(遇到错误停止,不建议)
#psql -U postgres --set ON_ERROR_STOP=on -f u_postgres.backup

常见问题及解决办法

权限过大问题

  • 迁移目标目录权限过大

解决办法: 修改权限(必须) chmod 700 pgdata/

目录错误或权限不足问题

在这里插入图片描述
在这里插入图片描述
  • 由于错误操作导致的目录无法识别为有效路径或者因错误修改权限导致的

解决办法: 修改数据文件所在文件夹为posrgres所有 chown -R postgres pgdata chown 700 pgdata #可切换postgres 测试读写权限

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 环境说明
  • 备份
    • 数据备份
    • 文件备份
  • 迁移方案一:数据文件迁移
    • 迁移数据文件
    • 修改服务种数据文件位置
  • 迁移方案二:数据还原法
    • 上传数据备份文件
    • 使用psql还原
  • 常见问题及解决办法
    • 权限过大问题
    • 目录错误或权限不足问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档