6

我正在从 postgresql 备份/恢复我使用的数据pg_dump.exepg_restore.exe.

为了恢复备份文件,如果转储文件不正常,我必须删除数据库中的实际表,这可能是“自杀性工作”。

我可以用(比如)'7z t mydump.gz'检查转储文件的完整性,我喜欢第一次测试。

但我想知道,因为这个存档是原始的 PG 存档,PostgreSQL 是否包含任何技术来检查这个“.gz”存档,我可以在删除实际表之前采取这些技术?

如果这样做,如何进行适当的检查?

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

"C:\Program Files (x86)\PostgreSQL\9.1\bin\pg_dump.exe" --host localhost --port 5432 --username "postgres" --no-password --verbose -F t --file "C :\Users\User 1\Desktop\mydatabase.gz" "mydatabase"

4

1 回答 1

7

您似乎正在尝试验证您刚刚制作的 PostgreSQL 转储的有效性和正确性。

您的主要误解是您不必将转储恢复到您从中创建它的同一数据库中。您可以恢复到同一个集群上的另一个数据库,或者为了额外的偏执,恢复到另一个集群(服务器)上的数据库。验证转储是否已正确还原,并且数据与您预期的一样。

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

如果您担心原始数据库,那么您可能没有备份。这是一个关键问题。您需要立即阅读有关备份和恢复的文档章节,并获得一个良好的自动备份方案。看看酒保

问题编辑后更新

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

您生成的文件不是.gz(gzip 压缩的)文件,无论如何,它是一个.tar存档文件,而不是压缩文件。可以将其提取到一个充满 SQL 文件的目录中。

要对其进行测试,请使用将其还原到使用或命令pg_restore创建的新空数据库。createdbCREATE DATABASE

于 2012-12-05T09:02:59.230 回答