使用 pg_dump 和 pd_dumpall 备份数据库

概述

主要记录一下如何使用postgresql自带的数据库备份工具。例如pg_dump 和 pg_dumpall 的使用。
备份数据库是数据库管理中最关键的任务之一。 备份数据库之前,应考虑以下几点:

  • 全部/部分数据库
  • 数据和结构,或仅结构
  • 时间点恢复
  • 恢复性能

备份与恢复

数据库备份可以粗略的分为两类

  • 逻辑备份
  • 物理备份

逻辑备份/恢复

逻辑备份通过读取数据库记录集,且将记录集写入文本文件或自定义转储格式来实现。这种记录
集的读出与物理位置无关。
PG的逻辑备份实现方式:
– pg_dump:只能针对一个数据库,能够生成一个数据库的一致性备份。备份的对象是数据库中的对象。要求,数据库是开启的状态。
– pg_dumpall:针对整个数据库簇
对应的逻辑恢复:
– 生成的文本可以使用psql进行恢复
– 纯数据可以用copy恢复
– 自定义转储格式只能使用pg_restore恢复

pg_dump 常用参数说明

pg_dump [OPTION]... [DBNAME]
– -h, --host=HOSTNAME : 连接到指定数据库主机地址
– -p, --port=PORT : 连接到指定数据库端口
– -U, --username=NAME : 连接使用的用户名
– -d, --dbname=DBNAME : 导出的数据库名字
– -a, --data-only:只导出数据
– -E encoding,--encoding=encoding:指定字符集编码
– -j, --jobs=NUM : 导出并发数
– -f, --file=FILENAME : 导出文件名
– -F, --format=p|c|d|t : 导出数据格式(text, 自定义转储格式,目录,tar)数据的兼容性用c更好。
– -n, --schema=schema:导出指定模式
– -t, --table=table:导出指定表(可以写多个表)
– -s, --schema-only:只导出对象定义不导出数据(只导出数据的定义)
– -Z0~9:使用gzip压缩(gzip 的压缩级别 9 压缩的级别最高)
– -c:创建对象前先删除(先drop)
– -C:创建对象
– --disable-triggers:禁用触发器(生成的备份文件加入禁用触发器的命令,导完数据后再启用)
• -S,--superuser=username:指定超级用户(disable-triggers 配合使用)

pg_restore常用参数说明

主要是用在二进制转储文件的使用

pg_restore [OPTION]... [filename]
– -h, --host=HOSTNAME : 连接到指定数据库主机地址
– -p, --port=PORT : 连接到指定数据库端口
– -U, --username=NAME : 连接使用的用户名
– -d, --dbname=DBNAME : 连接的数据库名字
– -a, --data-only:只导入数据
– -j, --jobs=NUM : 导入并发数
– -f, --file=FILENAME : 导出文件名
– -F, --format=p|c|d|t : 文件数据格式(text, 自定义转储格式,目录,tar)
– -n, --schema=schema:导入指定模式
– -t, --table=table:导入指定表
– -s, --schema-only:只导入对象定义不导入数据
– -c:创建对象前先删除
– -C:创建对象
– --disable-triggers:禁用触发器
• -S,--superuser=username:指定超级用户

pg_dump 使用样例

1 脚本文件范式恢复(单个表)

备份平面文件/ 使用psql 进行恢复

备份

pg_dump -d myDB -p 65432 -t black_blog -Fp -f black_blog.sql

在这里插入图片描述
删除备份表测试

drop table black_blog

恢复

psql -f black_blog.sql -d myDB -p 65432

在这里插入图片描述

可以看到导出的文本都是psql 可以直接执行的脚本。

2 二进制文件备份 pg_restore 恢复(整个数据库)

1备份数据库使用二进制方式

 pg_dump -p 65432 -Fc -f atlsdb.dmp atlasdb

在这里插入图片描述
2 删除数据库
在这里插入图片描述
3 恢复数据库(两种方式恢复)
自动建库

pg_restore -Fc -p 65432 -C -d postgres atlasdb.dmp

手动建库恢复

createdb atlasdb
 pg_restore -Fc -d atlasdb /db/backup/atlasdb.dmp

3 压缩备份

备份

pg_dump -t testtab1 -Z5 -f /db/backup/testtab1.sql.gz

恢复

gunzip -c /db/backup/testtab1.sql.gz|psql

4 并行备份

备份

pg_dump -j 4 -Fd -f /db/backup/dump atlasdb

恢复

pg_restore -d postgres -j 4 -C -Fd /db/backup/dump
发布了20 篇原创文章 · 获赞 2 · 访问量 9764

猜你喜欢

转载自blog.csdn.net/wangrui1605/article/details/104154500