2012-12-05 33 views
3

我正在从postgresql备份/恢复数据,用于我使用的pg_dump.exepg_restore.exe如何验证由pg_dump归档生成的归档是否正确并有效?

为了恢复备份文件我不得不删除数据库中的实际表什么都可以“自杀任务”如果有事情和转储文件也不行。

我可以检查其完整性与转储文件(比如说)“的7z牛逼mydump.gz”我不喜欢第一个测试。

但我想知道,因为这个档案原始PG归档并PostgreSQL的包含任何技术“广州”,我可以删除实际表之前采取存档中签呢?

如果这样做,如何做一个适当的检查?

编辑:这是我的倾倒实际的命令:

“C:\ Program Files文件(x86)的\ PostgreSQL的\ 9.1 \ BIN \ pg_dump.exe” --host --port本地主机5432 - username“postgres”--no-password --verbose -F t --file“C:\ Users \ User 1 \ Desktop \ mydatabase.gz”“mydatabase”

+1

实际上,至少对于测试,您可以重命名数据库,而不是将其清空。 –

回答

4

您似乎试图验证您刚刚创建的PostgreSQL转储的有效性和正确性。

您的重点误解是您不必将转储恢复到您从创建的同一数据库中。您可以恢复到同一集群上的另一个数据库,或者为另一个集群(服务器)上的数据库增加偏执狂。验证转储是否已正确恢复,并且数据是否与您预期的相同。

对于额外的偏执,停止PostgreSQL服务器,并在数据目录中的文件复制。这样你也有一个文件级的备份。请注意,PostgreSQL数据目录的文件级副本只有可以在相同平台上使用相同选项构建的同一个主要版本(8.1/8.2/...)版本的PostgreSQL读取 - 因此,如果数据目标是从9.2 .x在Windows x64上,它只能被装有9.2.x的另一台Windows x64主机读取。

如果你担心你的原始数据库,那么你可能没有备份。这是一个关键的问题。您需要紧急阅读documentation chapter on backup and restore并获得一个很好的自动化备份方案。看看barman。问题编辑后

更新:

-F t是一个奇怪的选择;普通的SQL转储或-F c通常更有意义。

您制作的文件不是.gz(gzip压缩)文件,无论如何,这是一个.tar存档,未压缩。它可以被解压缩到一个完整的SQL文件目录中。

要测试它,请使用pg_restore将其恢复到使用createdbCREATE DATABASE命令创建的新的空数据库。

+0

嗨克雷格。我只转储/恢复一个表到现有和空的数据库。现在你看到我的命令行。 –