postgresql 备份

今天浅谈一下 大象头 的备份方法

工具

postgresql 备份_第1张图片

逻辑备份推荐使用 pg_dump

备份

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_hba.conf 文件,Ubuntu20.04 在 /etc/postgresql/14/main

postgresql 备份_第2张图片

将 peer 列改成 trust

重启数据库服务

pg_dump -h localhost -U postgres -v -Fc -d abc --no-owner -f /backup/abc.dump

postgresql 备份_第3张图片

pg_dumpall

备份(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命令)的形式转储数据

pg_dumpall -h localhost -U postgres  > /backup/all.dump

查看备份文件

postgresql 备份_第4张图片

发现备份的是SQL文本格式

导出所有的 roletablespace

postgresql 备份_第5张图片

pg_dumpall -h localhost -U postgres -g  > /backup/all.dump

注意:无论是pg_dump还是pg_dumpall导出的数据都不是sql格式,而是copy格式,-d, --inserts参数控制到底是SQL是COPY格式

pg_dumpall -h localhost -U postgres --inserts > /backup/all.sql

你可能感兴趣的:(postgresql,oracle,数据库)