PG_DUMP(1) | PostgreSQL Client Applications | PG_DUMP(1) |
pg_dump - 将一个PostgreSQL数据库抽出到一个脚本文件或者其它归档文件中
pg_dump [ option... ] [ dbname ]
pg_dump 是一个用于备份 PostgreSQL 数据库的工具。它甚至可以在数据库正在并发使用的时候进行完整一致的备份。 pg_dump 并不阻塞其它用户对数据库的访问(读或者写)。
转储格式可以是一个脚本或者归档文件。
这个脚本文件的格式是纯文本,它包含许多
SQL 命令, 这些 SQL
命令可以用于重建该数据库并将之恢复到保存成脚本的时候的状态。
要恢复这些脚本,使用
psql(1)。
它们甚至可以用于在其它机器甚至是其它硬件体系的机器上重建该数据库,
通过对脚本进行一些修改,甚至可以在其它
SQL
数据库产品上重建该数据库。
另外,还有候选的归档文件格式可以和
pg_restore(1)
一起使用重建数据库,
并且它们也允许
pg_restore(1)
对恢复什么东西进行选择,
或者甚至是在恢复之前对需要恢复的条目进行重新排序。
归档文件也是设计成可以跨平台移植的。
如果一种候选文件格式和
pg_restore(1)
结合,那么pg_dump就能提供一种灵活的归档和传输机制。
pg_dump
可以用于备份整个数据库,
然后就可以使用 pg_restore
检查这个归档和/或选择要恢复的数据库部分。
最灵活等输出文件格式是
``custom(客户化)''
格式(-Fc)。
它允许对归档元素进行选取和重新排列,
并且缺省时是压缩的。tar
格式(-Ft)不是压缩的并且我们在装载等时候不可能重排列,
不过它也很灵活;还有,它可以用其它工具,比如
tar 处理。
在运行 pg_dump
的时候,我们应该检查输出,
看看是否有任何警告存在(在标准错误上打印),特别是下面列出的限制。
下面的命令行参数用于控制输出格式。
这个选项只是对纯文本格式有意义。对于其它格式,你可以在调用
pg_restore
的时候声明选项。
这个选项只是对纯文本格式有意义。对于其它格式,你可以在调用
pg_restore
的时候声明选项。
这个选项只对纯文本格式有意义。对于其它格式,你可以在调用
pg_restore
的时候声明该选项。
pg_dump 可以处理来自以前版本的PostgreSQL 的数据库,但是太老的版本则不被支持了(目前是支持到 7.0)。 如果你需要跨越版本检查时才使用这个选项( 而且如 pg_dump 失效,别说我没警告你)。
这个选项只是对纯文本格式有意义。对于其它格式,在你调用
pg_restore
的时候你可以声明该选项。
目前,为 --disable-triggers
发出的命令必须用超级用户来做。
因此,你应该同时用
-S
声明一个超级用户名,或者最好是用一个超级用户的身份来启动这个生成的脚本。
这个选项只对纯文本格式有意义。对于其它格式,你可以在调用
pg_restore
的时候声明这个选项。
下面的命令行参数控制数据库为联接参数。
pg_dump 在内部使用 SELECT 语句。如果你运行 pg_dump 时碰到问题,确认你能够使用象 psql(1) 这样的程序从数据库选取信息。
如果你的数据库给template1数据库增加了任何你自己的东西, 那么请注意把 pg_dump 的输出恢复到一个真正空的数据库中; 否则你可能会收到因为重复定义所追加的对象而造成的错误信息。要制作一个没有任何本地附属物的数据库, 可以从template0而不是template1拷贝,比如:
CREATE DATABASE foo WITH TEMPLATE template0;
pg_dump 有几个限制:
tar
归档的成员的大小限制于
8 GB。(这个限制是 tar
文件格式的固有限制。)
因此这个格式无法用于那些一个表的大小超过这个尺寸的原文表现。
tar
归档和任何其它输出格式的总大小是不受限制的,只是可能会又操作系统的限制。
恢复完之后,我们建议在每个已恢复的对象上运行
ANALYZE。
这样优化器就可以得到有用的统计。
转储一个数据库:
$ pg_dump mydb > db.out
重载这个数据库:
$ psql -d database -f db.out
输出一个叫 mydb 的包含BLOB
的数据库到一个 tar
文件:
$ pg_dump -Ft -b mydb > db.tar
把这个数据库(连同BLOB)一起恢复到一个现有的叫
newdb 的数据库:
$ pg_restore -d newdb db.tar
pg_dump 工具最早出现在 Postgres95 版本 0.02。 非纯文本输出格式在 PostgreSQL 版本 7.1 时引入。
pg_dumpall(1), pg_restore(1), psql(1)
Postgresql 中文网站 何伟平 <laser@pgsqldb.org>
本页面中文版由中文
man 手册页计划提供。
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | Application |