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备份工具 pgBackRest使用详解

    PostgreSQL备份工具 pgBackRest使用详解

    这篇文章主要介绍了PostgreSQL备份工具 pgBackRest使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • PostgreSQL中查看当前时间和日期的几种常用方法

    PostgreSQL中查看当前时间和日期的几种常用方法

    在 PostgreSQL 中,有多个函数可以用来查看当前时间和日期,这些函数在处理时间戳、日期和时间的计算时非常有用,以下是几种常用的查看当前时间和日期的函数及示例,需要的朋友可以参考下
    2024-10-10
  • PostgreSQL批量update与oracle差异详解

    PostgreSQL批量update与oracle差异详解

    这篇文章主要介绍了PostgreSQL批量update与oracle差异,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • PostgreSQL 10分区表及性能测试报告小结

    PostgreSQL 10分区表及性能测试报告小结

    PostgreSQL的分区表跟先前版本一样,也要先建立主表,然后再建立子表,使用继承的特性,但不需要手工写规则了,目前支持range、list分区,10正式版本发布时不知会不会支持其它方法,感兴趣的朋友跟随小编一起看看吧
    2022-01-01
  • PostgreSQL 禁用全表扫描的实现

    PostgreSQL 禁用全表扫描的实现

    这篇文章主要介绍了PostgreSQL 禁用全表扫描的实现操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL有效地处理数据的加密和解密的常见方法

    PostgreSQL有效地处理数据的加密和解密的常见方法

    在信息化建设和等保建设中,都要求实现对用户数据的隐私保护,也就是我们常说的脱敏,那么在 PostgreSQL 数据库中有没有这样的方法或者策略可以实现呢,本文小编将给大家介绍一下PostgreSQL有效地处理数据的加密和解密的常见方法,需要的朋友可以参考下
    2025-03-03
  • PostgreSQL数据库事务出现未知状态的处理方法

    PostgreSQL数据库事务出现未知状态的处理方法

    这篇文章主要给大家介绍了PostgreSQL数据库事务出现未知状态的处理方法,需要的朋友可以参考下
    2017-07-07
  • postgresql 中的序列nextval详解

    postgresql 中的序列nextval详解

    这篇文章主要介绍了postgresql 中的序列nextval详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 关于PostgreSQL JSONB的匹配和交集问题

    关于PostgreSQL JSONB的匹配和交集问题

    这篇文章主要介绍了PostgreSQL JSONB的匹配和交集问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • PostgreSQL教程(四):数据类型详解

    PostgreSQL教程(四):数据类型详解

    这篇文章主要介绍了PostgreSQL教程(四):数据类型详解,本文讲解了数值类型、字符类型、布尔类型、位串类型、数组、复合类型等数据类型,需要的朋友可以参考下
    2015-05-05

最新评论