postgreSql pg_dump
pg_dumpNamepg_dump-- 将一个 PostgreSQL数据库抽出到一个脚本文件或者其它归档文件中Synopsispg_dump [option...] [dbname] 描述pg_dump 是一个用于备份 PostgreSQL 数据库的工具。它甚至可以在数据库正在并发使用的时候进行完整一致的备份。 pg_dump 并不阻塞其它用户对数据库的访问(读或者写)。 转储格式可以是一个脚本或者归档文件。 脚本转储的格式是纯文本,它包含许多 SQL 命令, 这些 SQL 命令可以用于重建该数据库并将之恢复到保存成脚本的时候的状态。 要从这样的脚本中恢复,使用 psql。 它们甚至可以用于在其它机器甚至是其它硬件体系的机器上重建该数据库, 通过对脚本进行一些修改,甚至可以在其它 SQL 数据库产品上重建该数据库。 另外,还有候选的归档文件格式必须和 pg_restore 一起使用重建数据库。 它们允许 pg_restore 对恢复什么东西进行选择, 或者甚至是在恢复之前对需要恢复的条目进行重新排序。 归档格式还允许保存和恢复"大对象",这个在脚本转储里是不可能的。 归档文件也是设计成可以跨平台移植的。 如果一种候选文件格式和 pg_restore 结合,那么pg_dump就能提供一种灵活的归档和传输机制。 pg_dump 可以用于备份整个数据库, 然后就可以使用 pg_restore 检查这个归档和/或选择要恢复的数据库部分。 最灵活等输出文件格式是"custom(客户化)"格式(-Fc)。 它允许对归档元素进行选取和重新排列, 并且缺省时是压缩的。 tar 格式(-Ft)不是压缩的并且我们在装载等时候不可能重排列, 不过它也很灵活;还有,它可以用标准 Unix 工具,比如 tar 处理。 在运行 pg_dump 的时候,我们应该检查输出, 看看是否有任何警告存在(在标准错误上打印),特别是下面列出的限制。 选项下面的命令行参数控制输出的内容和格式。
下面的命令行参数控制数据库为联接参数。
环境
诊断pg_dump 在内部使用 SELECT 语句。如果你运行 pg_dump 时碰到问题,确认你能够使用象 psql 这样的程序从数据库选取信息。 注意如果你的数据库给template1数据库增加了任何你自己的东西, 那么请注意把 pg_dump 的输出恢复到一个真正空的数据库中; 否则你可能会收到因为重复定义所追加的对象而造成的错误信息。要制作一个没有任何本地附属物的数据库, 可以从template0而不是template1拷贝,比如: CREATE DATABASE foo WITH TEMPLATE template0; pg_dump 有几个限制:
tar 归档的成员的大小限制于 8 GB。(这个限制是 tar 文件格式的固有限制。) 因此这个格式无法用于任何单表的大小超过这个尺寸的原文表现。 tar 归档和任何其它输出格式的总大小是不受限制的,只是可能会又操作系统的限制。 pg_dump 生成的转储文件并不包含优化器用于查询规划决策的统计信息。 因此,恢复完之后,我们建议在每个已恢复的对象上运行 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 时引入。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |