postgreSQL数据备份与迁移的完美实践

🍎✨ 数据备份与迁移

参考文章

❗️pg_dump命令说明

❗️pg_restore命令说明

Postgresql备份与还原命令pg_dump

PostgreSQL pg_dump&psql 数据的备份与恢复

1、首先安装一下postgresql

❗️❗️❗️特别要注意版本问题!

❗️❗️❗️后面出了12、13版本了~版本是向下兼容的,安装的时候一定要注意!!!

brew install postgresql@11

2、修改环境变量使命令生效

# 我的postgre11安装的目录是:
/usr/local/Cellar/postgresql@11/11.12/bin

# 修改~/.bash_profile
cd ~/
vim .bash_profile

# 增加PATH,将下面这行加进去
export PATH=/usr/local/Cellar/postgresql@11/11.12/bin:$PATH

# source
source .bash_profile

# 如果使用 zshrc的话,需要再做一步:
echo 'export PATH="/usr/local/Cellar/postgresql@11/11.12/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

# 验证一下
which pg_dump
输出:/usr/local/Cellar/postgresql@11/11.12/bin/pg_dump

3、备份远程数据库的表结构到本地

-U:用户名
-h:host
-p:端口
-d:要导出哪个数据库的表结构
-f:后面跟导出的文件名,也可以加上完整的路径
-F:表示导出的文件格式(这里导出成tar类型,如果不指定-F,默认导出文本格式,后缀可以用.sql)
-s:表示只备份表结构!❗️去掉-s会将数据也都导出来
-x:加上它以后可以忽略权限相关的配置!❗️现在数据库中没有关于权限的配置,所以暂时可以加上这个参数!
-O:表示忽略用户owner,导出的sql语句中不包含 WONER TO 语句
-W:表示强制输入密码
# 执行命令前将当前目录切换到Downloads(其他目录也行): cd ~/Downloads

# ❗️1、生成 tar文件(推荐)
pg_dump -U (用户名) -h (数据库的host) -p 5432 -d (数据库名) -f runfast_struct.tar -F tar -sOW


# 2、生成 sql文件
pg_dump -U (用户名) -h (数据库的host) -p 5432 -d (数据库名) -f runfast_struct.sql -x -sOW

4-1、将表结构导入到目标数据库

# 如果目标服务器中还没有数据库,需要使用 -C 参数创建一下

# owner相关(暂时没有权限相关的配置的话可以不用搞这个)
--role=(用户名)

# 执行命令前将当前目录切换到Downloads(其他目录也行): cd ~/Downloads

# ❗️方式1: 注意dump的时候得用 -F 命令生成一个tar格式的文件(推荐)
pg_restore -U (用户名) -h (host) -p 4432 -d (dbname) -O -x < runfast_struct.tar

# 方式2: 如果前面生成的是sql文件,用这个方法。❓但是pgsql命令貌似在远程没办法执行!
pgsql -U (用户名)  -h (host) -p 4432 -d(dbname) -O -x < runfast_struct.sql

4-2关于dump的时候加上-x参数禁止转储权限相关的问题

文档中关于-x的参数有如下说明:

-x
--no-privileges
--no-acl
	禁止转储访问权限(grant/revoke 命令)。

加上与不加这个-x可以看到只有一些不同,主要是一些权限的配置,不影响迁移后数据库的读写操作!

# 数据库权限相关,如果没有用到可以不加
REMOKE ALL ON SCHEMA public FROM PBULIC;
GRANK ALL ON SCHEMA public TO PBULIC;

5、表结构完整性验证

—— 其实可以将线上的数据库与新生成的数据库使用pg_dump命令分别导出成sql文件,比较一下两个sql文件有没有不同的地方就好了:

posted on 2021-05-20 21:04  江湖乄夜雨  阅读(3836)  评论(0编辑  收藏  举报