postgres 数据库迁移的几种方法

 更新时间:2025年07月17日 09:39:57   作者:master336  
本文详细介绍了postgres 数据库迁移的几种方法,包括数据文件备份、数据文件迁移方案以及常见问题及其解决方案,感兴趣的可以了解一下

环境说明

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

配置说明备注
操作系统CentOS7
PG数据版本9.6.24
操作系统用户root/postgres
数据量用户(20)、角色(20)、数据库(2)、schema(42)、数据量(约160W行)数据文件约640M

备份

数据备份

#创建备份存放文件夹(确保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

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

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

迁移数据文件

此过程需要先行停止pg数据库

完成执行文件备份

#确保过程种服务是停止的
systemctl stop postgresql-9.6
cd /home
#创建迁移目录 并修改权限
mkdir pgdata
##修改归属
chown -R postgres pgdata/
##修改权限(必须)
chmod 700 pgdata/
#切换至pg用户
 su - postgres
#复制数据文件到新位置
cp -rf data/* /home/pgdata/

修改服务种数据文件位置

#编辑服务配置文件
vim  /usr/lib/systemd/system/postgresql-9.6.service
#修改配置文件种的数据文件路径
修改:Environment=PGDATA=/var/lib/pgsql/9.6/data/
为:Environment=PGDATA=/home/pgdata/
#保存退出
#重启系统
reboot

迁移方案二:数据还原法

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

上传数据备份文件

#创建备份文件存放位置
cd /home
mkdir postgres
#上传备份文件到上一步的存放位置(上传过程省略)
mv u_postgres.backup postgres/
#修改权限
chown -R postgres postgres/

使用psql还原

#切换用户
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 测试读写权限

到此这篇关于postgres 数据库迁移的几种方法的文章就介绍到这了,更多相关postgres 数据库迁移内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • PostgreSQL执行计划的使用与查看教程

    PostgreSQL执行计划的使用与查看教程

    PostgreSQL中的执行计划(或查询计划)是数据库管理系统用来详细说明如何执行特定SQL查询的一系列操作步骤,简单来说,执行计划就是数据库如何解读你的SQL语句,本文给大家介绍了PostgreSQL执行计划的使用与查看教程,需要的朋友可以参考下
    2025-09-09
  • PostgreSQL数据库中Sequence的使用方法详解

    PostgreSQL数据库中Sequence的使用方法详解

    在 PostgreSQL 数据库中,Sequence 是一种特殊的表对象,主要用于生成按顺序递增或递减的数字序列,通常用于需要唯一标识符的场景,例如自增 ID,以下是如何在 PostgreSQL 中使用 Sequence 的详细步骤,需要的朋友可以参考下
    2024-11-11
  • 深入理解PostgreSQL 事务处理

    深入理解PostgreSQL 事务处理

    PostgreSQL事务处理确保数据一致性,支持四种隔离级别,处理脏读、不可重复读和幻读问题,并可通过会话或配置文件设置,自动提交默认开启,感兴趣的可以了解一下
    2025-06-06
  • postgresql 除法保留小数位的实例

    postgresql 除法保留小数位的实例

    这篇文章主要介绍了postgresql 除法保留小数位的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgreSQL数据库 实现向表中快速插入1000000条数据

    postgreSQL数据库 实现向表中快速插入1000000条数据

    这篇文章主要介绍了postgreSQL数据库 实现向表中快速插入1000000条数据,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • PostgreSQL清空数据库的常用方法

    PostgreSQL清空数据库的常用方法

    PostgreSQL 中清空一个数据库通常有几种理解和对应方法,具体取决于你的需求,本文通过代码示例给大家介绍了常用的清空方法,需要的朋友可以参考下
    2026-03-03
  • PostgreSQL实现数据表跨库同步的四种方案

    PostgreSQL实现数据表跨库同步的四种方案

    文章详细介绍了四种用于实现PostgreSQL数据库表数据变化实时或定时同步到另一个独立PG库的方法,包括触发器+外部表、逻辑复制、Debezium+Kafka和pg_dump定时任务,针对不同场景和需求,推荐了最适合的方案,并详细阐述了各自的优点、适用场景、配置方法和使用注意事项
    2026-05-05
  • PostgreSQL WAL日志膨胀的处理过程

    PostgreSQL WAL日志膨胀的处理过程

    PostgreSQL由于WAL日志的机制,导致其在不正确配置的情况下会出现磁盘空间暴涨的情况,本文档就此情景写一般处理办法,感兴趣的小伙伴跟着小编一起来看看吧
    2024-12-12
  • PostgreSQL中的template0和template1库使用实战

    PostgreSQL中的template0和template1库使用实战

    这篇文章主要介绍了PostgreSQL中的template0和template1库使用实战,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 解决postgresql 数字转换成字符串前面会多出一个空格的问题

    解决postgresql 数字转换成字符串前面会多出一个空格的问题

    这篇文章主要介绍了解决postgresql 数字转换成字符串前面会多出一个空格的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论