我的目的是使用以下命令转储数据库:
pg_dump -U postgres -h localhost -p 5432 MYDB | gzip > database_dump.gz
并使用以下命令将其恢复到另一个环境:
gunzip -c database_dump.gz | ssh 10.10.10.10 \
psql -1 -U postgres -h localhost -p 5432 MYDB
在第二个环境中恢复数据库之前,我将删除现有的数据库,以便为新的转储(包含更新的数据)腾出空间。
我的问题是:是否需要在pg_dump语句中指定-C
参数,以便输出的转储文件包含CREATE DATABASE
语句?我注意到,如果没有该参数,转储文件将不包含CREATE DATABASE
语句。
根据-C
参数的9.1文档,“该选项只对纯文本格式有意义。对于归档格式,您可以在调用pg_restore时指定该选项。”我不确定这是什么意思。正如您在上面看到的,我正在使用psql而不是pg_restore进行恢复。
发布于 2012-09-07 21:30:56
这意味着要使用psql
重新创建数据库,您需要添加-C
。
pg_restore
是一个专门用于从pg_dump
以非明文格式生成的脚本还原数据库的工具。你不能像psql
那样交互式地使用它。另一方面,您可以选择列出存档中的对象并选择需要恢复的对象。另一个有用的选项是设置用于处理存档的并发作业的数量。在某些情况下,这可以大大加快恢复速度。
如果您不使用-F
选项指定pg_dump
的输出格式,它将为您创建一个纯文本存档。
https://stackoverflow.com/questions/12318792
复制相似问题