我正在使用postgresql中的备份/恢复数据来处理我使用pg_dump.exe
和pg_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 - 文件“C:\ Users \ User 1 \ Desktop \ mydatabase.gz”“mydatabase”
答案 0 :(得分:5)
您似乎正在尝试验证刚刚制作的PostgreSQL转储的有效性和正确性。
您的主要误解是您无需将转储还原到您从创建的转发数据库中。您可以还原到同一群集上的另一个数据库,或者另一个群集(服务器)上的数据库的额外偏执。验证转储是否已正确恢复且数据是否符合您的预期。
对于额外的偏执,请停止PostgreSQL服务器并复制数据目录中的文件。这样你就有了文件级备份。请注意,PostgreSQL数据目录的文件级副本只能由同一平台上使用相同选项构建的PostgreSQL相同的主要版本(8.1 / 8.2 / ...)读取 - 因此,如果datadir来自Windows x64上的9.2.x,它只能由另一台安装了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
命令创建的新空数据库。