PostgreSQL 备份与还原

PostgreSQL About 1,849 words

备份 - pg_dump

参数

  • -U:指定用户;
  • --encoding:指定编码;
  • -d--dbname:指定备份数据库;
  • -f--file:导出到指定文件;
  • -Z--compress:指定备份时压缩等级,0-99最大限度压缩,也最耗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 -U postgres --encoding utf8 -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 -U postgres --encoding utf8 -O -a -d z-blog -Z 9 -f pg_backup_data.dump

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

pg_dump -U postgres --encoding utf8 -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数据库未创建,需提前创建。

连接数据库

psql -U postgres

创建数据库

先删除旧数据库

DROP DATABASE IF EXISTS "z-blog";

再创建新数据库

CREATE DATABASE "z-blog";

退出连接

exit

还原数据

WindowsGit Bash中执行,因为CMDPowerShell默认字符集不是UTF-8。(当然也不是在PostgreSQL的命令行中执行,上一步创建完新数据库后退出连接到普通命令行中)

psql -U postgres -d postgres -f backup_schema.sql

还原 - pg_restore

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

例子

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

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

pg_restore -U postgres -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

Views: 5,938 · Posted: 2020-04-18

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

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

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


Today On History
Browsing Refresh