.bak 即压缩的二进制
.sql 即明文存储
.tar 即tarball压缩格式
数据库备份分单数据库备份,使用 pg_dump 命令;所有数据库备份,使用 pg_dumpall 命令
-f, --file=FILENAME 输出文件名或目录名
-F, --format=c|d|t|p 输出文件格式(自定义、目录格式、tar包格式、纯文本)
-j, --jobs=NUM 使用多个并行作业进行转储
-v, --verbose 详细信息模式
-b, --blobs 在转储中包括大对象
-c, --clean 在重新创建之前,先清除(删除)数据库对象
-C, --create 在转储中包括命令,以便创建数据库(包括建库语句,无需在导入之前先建数据库)
-n, --schema=SCHEMA 只转储指定名称的模式
-N, --exclude-schema=SCHEMA 不转储已命名的模式
-t, --table=TABLE 只转储指定名称的表
--column-inserts 以带有列名的INSERT命令形式转储数据
-d, --dbname=DBNAME 数据库名
-h, --host=HOSTNAME 数据库服务器的主机名或套接字目录
-p, --port=PORT 数据库服务器的端口号
-U, --username=NAME 以指定的数据库用户联接
-w, --no-password 永远不提示输入口令
-W, --password 强制口令提示 (自动)
--role=ROLENAME 在转储之前执行SET ROLE命令
pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f mydb.backup(自定义文件名) mydb(库名)
pg_dump -h localhost -p 5432 -U someuser -C -F p -b -v -f mydb.backup mydb
-f, --file=FILENAME 输出文件名
-v, --verbose 详细信息模式
-a, --data-only 仅转储数据,而不转储schema
-g, --globals-only 仅转储全局对象,而不转储数据库
-r, --reles-oly 仅转储角色,而不转储数据库和表空间
-s, --schema-only 仅转储shema,而不转储数据
--inserts 以INSERT命令(而非COPY命令)的形式转储数据
-d, --dbname=DBNAME 数据库名
-h, --host=HOSTNAME 数据库服务器的主机名或套接字目录
-l, --database=DBNAME 代替默认数据库
-p, --port=PORT 数据库服务器的端口号
-U, --username=NAME 以指定的数据库用户联接
-w, --no-password 永远不提示输入口令
-W, --password 强制口令提示 (自动)
--role=ROLENAME 在转储之前执行SET ROLE命令
pg_dumpall -U postgres -h localhost -p 5432 -v -f all.backup
pg_dumpall -h localhost -U postgres --port=5432 -f myglobals.sql --globals-only
pg_dumpall -h localhost -U postgres --port=5432 -f myroles.sql --roles-only
使用psql来恢复pg_dump或pg_dumpall工具生产的sql文本格式的数据备份
使用pg_restore工具来恢复由pg_dump工具生产的自定义压缩格式、tar包格式或者目录格式备份
psql -U postgres -f myglobals.sql
psql -U postgres --set ON_ERROR_STOP=on -f myglobals.sql
psql -U postgres -d mydb(库名) -f select_objects.sql
-d, --dbname=DBNAME 数据库名
-f, --file=FILENAME 输入文件名
-F, --format=c|d|t 输入文件格式(可以自动识别)
-v, --verbose 详细信息模式
-a, --data-only 仅恢复数据,而不恢复schema
-C, --create 创建目标数据库
-j, --jobs=NUM 使用多个并行作业进行恢复
-s, --schema-only 仅恢复shema,而不恢复数据
--section=SECTION 恢复命名部分(包括三个部分:pre-data,data以及post-data。\
data部分包含表记录数据、大对象数据以及序列的值;\
post-data部分包含索引、触发器、规则和约束的定义;\
pre-data部分包含除此外其他所有的对象定义)
-h, --host=HOSTNAME 数据库服务器的主机名或套接字目录
-p, --port=PORT 数据库服务器的端口号
-U, --username=NAME 以指定的数据库用户联接
-w, --no-password 永远不提示输入口令
-W, --password 强制口令提示 (自动)
--role=ROLENAME 在转储之前执行SET ROLE命令
create databases mydb;
pg_restore --dbname=mydb --jobs=4 --verbose mydb.backup
pg_restore --dbname=postgres --create --jobs=4 --verbose mydb.backup
--create选项,必须先连接数据库,才能创建数据库,所有指定--dbname=postgres