当我尝试从新版本的Mac OS X 10.5(32位)保存在我的新版本10.6(64位)下的备份中恢复PostgreSQL数据库时,出现此错误:
# sudo -u postgres /opt/local/lib/postgresql82/bin/postgres -D defaultdb_backup FATAL: incorrect checksum in control file
这是由于一台服务器运行一个32位版本而另一台运行64位。
我如何恢复我的旧数据?
在相同的架构上安装与以前完全相同的版本的postgres,编译相同的选项,然后你可以恢复。 通过编写wal段和/或复制数据目录进行备份并不是真正的便携式。
正如depesz所说,你将需要编译一个32位版本的Postgres来导入备份。 您应该可以从Postgres网站获得安装程序,并且可以临时运行32位版本,即使在64位安装的OS X上也是如此。
另外,在将来进行备份时,我更喜欢使用pg_dump –clean从数据库中获得完整的转储。 您可以在任何版本的postgres上使用pg_dump –clean文件。
我发现如何恢复我的数据。
postgresql可执行文件是64位的:
# file /opt/local/lib/postgresql82/bin/postgres /opt/local/lib/postgresql82/bin/postgres: Mach-O 64-bit executable x86_64
我在我的备份中validationpostgresql可执行文件是32位的:
# file /Volumes/Backup/Backups.backupdb/MyMacBook/2009-09-23-004611/Macintosh\ HD/opt/local/lib/postgresql82/bin/postgres /Volumes/Backup/Backups.backupdb/MyMacBook/2009-09-23-004611/Macintosh HD/opt/local/lib/postgresql82/bin/postgres: Mach-O executable i386
我把它复制到我的系统上:
# sudo cp /Volumes/Backup/Backups.backupdb/MyMacBook/2009-09-23-004611/Macintosh\ HD/opt/local/lib/postgresql82/bin/postgres /opt/local/lib/postgresql82/bin/postgres_32
而现在当我这样做:
# sudo -u postgres /opt/local/lib/postgresql82/bin/postgres_32 -D defaultdb_backup
有用 !
谢谢你们