为了恢复备份文件,我必须删除数据库中的实际表,如果转储文件的内容不正确,可以是“自杀作业”.
我可以检查转储文件的完整性(例如)’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”
解决方法
您的主要误解是您不必将转储还原到您创建它的同一数据库中.您可以还原到同一群集上的另一个数据库,或者另一个群集(服务器)上的数据库的额外偏执.验证转储是否已正确恢复,并确保数据符合您的预期.
对于额外的偏执,停止Postgresql服务器并复制数据目录中的文件.这样你就有了文件级备份.请注意,Postgresql数据目录的文件级副本只能由同一平台上使用相同选项构建的相同主要(8.1 / 8.2 / …)版本的Postgresql读取 – 因此,如果datadir来自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将其还原到使用createdb或CREATE DATABASE命令创建的新空数据库.