PostgreSQL 备份与还原
PostgreSQL About 1,849 words备份 - pg_dump
参数
-U:指定用户;--encoding:指定编码;-d、--dbname:指定备份数据库;-f、--file:导出到指定文件;-Z、--compress:指定备份时压缩等级,0-9(9最大限度压缩,也最耗CPU等资源);-F、--format:导出格式(p|c|d|t)p:plain-输出普通文字SQL脚本(默认);c:custom-输出自定义归档格式,适用于pg_restore导入,该格式是最灵活导出方式,允许在导入时自定义选择和重排序归档条目。该格式默认启用压缩;d:directory-输出文件夹归档格式,适用于pg_restore导入。该格式会创建一个文件夹,一个表对应一个文件。该格式默认启用压缩,并且支持并行导出;t:tar-输出tar压缩归档格式,适用于pg_restore导入。该格式将文件夹归档格式产生的文件夹压缩成tar压缩包。但该格式不支持压缩(文件夹归档已经压缩了),并且在导入时也不能更改相关的表顺序。
-O、--no-owner:在明文格式中,忽略恢复对象所属者;-s、--schema-only:只转储模式, 不包括数据;-a、--data-only:只转储数据,不包括模式;-C、--create:包含创建数据库语句;-c、--clean:包含drop删除语句,建议与--if-exists同时使用;--if-exists:drop删除语句时带上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
还原数据
Windows在Git Bash中执行,因为CMD和PowerShell默认字符集不是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
参考
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓