PostgreSQL数据库逻辑备份与恢复
1 PG备份工具介绍
数据库类型 | 备份类型 | 还原方法 | 特点 |
pg_dump | 逻辑备份 | pg_restore | 只能备份单库,支持并发备份 |
pg_dumpall | 逻辑备份 | 输入重定向 | 只能备份全库,不支持并发备份 |
pg_basebackup | 物理备份 | 文件替换 | 需要准备另一个数据库实例进行备份,常用于流复制搭建 |
pg_start_backup() pg_stop_backup() | 物理备份 | 文件替换 | 在线热备份,可以不开启归档 |
pgbackrest | 物理备份 | pgbackrest | 支持全备、增备、差备,结合归档可恢复任意时间点 需单独安装插件,必须开启归档 |
注意事项:逻辑备份推荐使用pg_dump。
2 pg_dump工具
2.1 备份
pg_dump只能备份单个数据库,不会导出角色和表空间相关的信息,便于迁移或异机恢复。
# pg_dump --help 可以查看用法
-U, --username=NAME 以指定的数据库用户联接
-v, --verbose 详细输出模式
-F, --format=c|d|t|p 导出文件的格式,-Fc备份为二进制格式, 压缩存储. 并且可被 pg_restore 用于精细还原。-Fp备份为文本, 大库不推荐
-d, --dbname=DBNAME 指定数据库名
-O, --no-owner 在明文格式中, 忽略恢复对象所属者
-f, --file=FILENAME 导出后保存的文件名
--insert 导出成sql语句类型(耗时长)
导出库语句参考:pg_dump -U postgres -v -Fc -d cosmic_fi --no-owner -f /data/backup/cosmic_fi.dump
2.2 恢复
pg_restore 可以从pg_dump创建的存档中恢复一个PostgreSQL数据库
# pg_restore --help 可以查看用法
-U, --username=NAME 以指定的数据库用户联接
-O, --no-owner 跳过对象所有权的恢复
-d, --dbname=DBNAME 指定数据库名
-v, --verbose 详细信息模式
--role=ROLENAME 在恢复之前执行SET ROLE命令
导入库参考:pg_restore -U postgres --no-owner --role ptest_biz_baseline_bdai -d ptest_biz_baseline_bdai -v ptest_biz_baseline_bdai.dump
3 pg_dumpall工具
3.1 备份
pg_dumpall 可以备份整库。
# pg_dumpall --help 可以查看用法
-a, --data-only 仅转储数据,而不转储schema
-c, --clean 重新创建数据库之前清除(删除)数据库
-g, --globals-only 仅转储全局对象,而不转储数据库
-r, --roles-only 仅转储角色,而不转储数据库和表空间
-s, --schema-only 仅转储schema,而不转储数据
-O, --no-owner 以纯文本格式跳过对象所有权的恢复
--inserts 以INSERT命令(而非COPY命令)的形式转储数据
3.2 恢复
备份整库语句参考:
pg_dumpall > /pgsql12/backup/mypg_all.sql
还原pg_dumpall备份的文件: psql -f /pgsql12/backup/mypg_all.sql(对象或数据存在会报错,忽略)
PostgreSQL数据库逻辑备份与恢复
本文2024-09-23 01:13:33发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144577.html