export PGPASSWORD=root
pg_dumpall 是将一个PostgreSQL数据库集群全部转储到一个脚本文件中。pg_dumpall 只能导出成SQL。
pg_dumpall -h10.2.29.66 -p5432 -Uroot -f alldb.sql
pg_dump 命令可以选择一个数据库或部分表进行备份,在数据库处于使用状态时进行完整一致的备份,它并不阻塞其他用户对数据库的访问(读或写)。
通过 pg_restore 命令恢复逻辑恢复 pg_dump 的备份
导出一个数据库
pg_dump -h10.2.29.66 -p5432 -Uroot -f test980500.sql test980500
或者
pg_dump -h10.2.29.66 -p5432 -Uroot test980500 > test980500.sql
仅导出数据库结构 (-s参数)
pg_dump -h10.2.29.66 -p5432 -Uroot -s -f test980500.sql test980500
导入整个数据库
psql -h10.2.29.66 -p5432 -Uroot test980501 < test980500.sql
或者
psql -h10.2.29.66 -p5432 -Uroot -f test980500.sql test980501
导出某个表
pg_dump -h10.2.29.66 -p5432 -Uroot test980501 -t example_table > example_table.sql
以insert语句的形式导出,加 --column-inserts 参数
pg_dump -h10.2.29.66 -p5432 -Uroot test980501 -t example_table --column-inserts > example_table.sql
管道压缩数据文件
pg_dump -h10.2.29.66 -p5432 -Uroot test980500 | gzip > test980500.gz
恢复
gunzip -c test980500.gz | psql -h10.2.29.66 -p5432 -Uroot test980501
备份后直接进行恢复,文件不落地
pg_dump -h10.2.29.66 -p5432 -Uroot test980500 | psql -h10.2.29.66 -p5432 -Uroot test980501
并行备份恢复
pg_dump -h10.2.29.66 -p5432 -Uroot -Fd -j4 -f /data/tmp_backup test980500
pg_restore -h10.2.29.66 -p5432 -Uroot -d test980501 -j4 /data/tmp_backup
常用参数
-d, --dbname=DBNAME 对数据库 DBNAME备份
-h, --host=主机名 数据库服务器的主机名或套接字目录
-p, --port=端口号 数据库服务器的端口号
-U, --username=名字 以指定的数据库用户联接
-w, --no-password 永远不提示输入口令
-W, --password 强制口令提示 (自动)
--role=ROLENAME 在转储前运行SET ROLE
-f, --file=FILENAME 导出后保存的文件名
-F, --format=c|d|t|p output file format (custom, directory, tar, plain text)
-a, --data-only 只导出数据,不包括模式
-b, --blobs 在转储中包括大对象
-c, --clean 在重新创建之前,先清除(删除)数据库对象
-C, --create 在转储中包括命令,以便创建数据库
-E, --encoding=ENCODING 转储以ENCODING形式编码的数据,例如:-E UTF8
-n, --schema=SCHEMA 只转储指定名称的模式
-N, --exclude-schema=SCHEMA 不转储已命名的模式
-o, --oids 在转储中包括 OID
-O, --no-owner 在明文格式中, 忽略恢复对象所属者
-s, --schema-only dump only the schema, no data只转储模式, 不包括数据(不导出数据)
-S, --superuser=NAME superuser user name to use in plain-text format在转储中, 指定的超级用户名
-t, --table=TABLE dump the named table(s) only只转储指定名称的表
-T, --exclude-table=TABLE do NOT dump the named table(s)只转储指定名称的表
-x, --no-privileges do not dump privileges (grant/revoke)不要转储权限 (grant/revoke)
-Z, --compress=0-9 被压缩格式的压缩级别
--column-inserts 以带有列名的INSERT命令形式转储数据
--inserts 以INSERT命令,而不是COPY命令的形式转储数据
--disable-dollar-quoting 取消美元 (符号) 引号, 使用 SQL 标准引号
--disable-triggers 在只恢复数据的过程中禁用触发器
--no-tablespaces 不转储表空间分配信息
--binary-upgrade 只能由升级工具使用
备份时可以加上 -Fc 参数,这样使用自定义PostgreSQL格式,该格式经过压缩并产生最小的备份文件大小, 不加默认为-Fp,即输出SQL 格式。