PostgreSQL备份与还原

PostgreSQL大约 1519 字

备份-pg_dump

参数

  • -d--dbname:指定备份数据库;
  • -f--file:导出到指定文件;
  • -Z--compress:指定备份时压缩等级,0-9(9最大限度压缩,也最耗CPU等资源);
  • -F--format:导出格式(p|c|d|t)
    • pplain-输出普通文字SQL脚本(默认);
    • ccustom-输出自定义归档格式,适用于pg_restore导入,该格式是最灵活导出方式,允许在导入时自定义选择和重排序归档条目。该格式默认启用压缩;
    • ddirectory-输出文件夹归档格式,适用于pg_restore导入。该格式会创建一个文件夹,一个表对应一个文件。该格式默认启用压缩,并且支持并行导出;
    • ttar-输出tar压缩归档格式,适用于pg_restore导入。该格式将文件夹归档格式产生的文件夹压缩成tar压缩包。但该格式不支持压缩(文件夹归档已经压缩了),并且在导入时也不能更改相关的表顺序。
  • -O--no-owner:在明文格式中,忽略恢复对象所属者;
  • -s--schema-only:只转储模式, 不包括数据;
  • -a--data-only:只转储数据,不包括模式;
  • -C--create:包含创建数据库语句;
  • -c--clean:包含drop删除语句,建议与--if-exists同时使用;
  • --if-existsdrop删除语句时带上IF EXISTS指令;

更多参数可使用pg_dump --help查看。

示例

只备份schema、包含drop/create语句、指定数据库z-blog、压缩等级0级(不压缩),到backup.sql文件。

pg_dump -s -C -c --if-exists -d z-blog -Z 0 -f pg_backup_schema.sql

只备份数据、忽略所属者、指定数据库z-blog、压缩等级9级(最高级别压缩),到backup.sql文件。(-c/--clean-a/--data-only不能同时使用)

pg_dump -O -a -d z-blog -Z 9 -f pg_backup_data.dump

备份所有数据包括模式、序列、数据等、指定导出格式为自定义格式、压缩等级为9、导出到pg_backup.dump文件。

pg_dump -F c -C -c --if-exists -d z-blog -Z 9 -f pg_backup.dump

还原-psql

如果使用pg_dump未指定format,则导出的是SQL脚本,导入时需用psql命令而不是pg_restore

psql导入时需指定连接的数据库,因z-blog还未创建(脚本中包含了创建数据库语句),所以连接时使用默认postgres数据库。

psql -d postgres -f backup_schema.sql

还原-pg_restore

大部分参数与pg_dump含义相近,可使用pg_restore --help查看。

例子

-d指定连接哪个数据库,注意:可以不用是目标数据库名,可使用默认postgres数据库,而且必须指定,否则一直无响应(可以kill掉)。

-d/--dbname-f/--file不能同时使用。

pg_restore -F c -d postgres pg_backup.dump

参考

https://www.postgresql.org/docs/current/app-pgdump.html

https://www.postgresql.org/docs/current/app-pgrestore.html

阅读 533 · 发布于 2020-04-18

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看换一批