Когда я пытаюсь восстановить базу данных PostgreSQL из резервной копии, сохраненной в моей старой версии Mac Os X 10.5 (32 бита) на моей новой версии 10.6 (64 бита), у меня появляется эта ошибка:
# 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 для получения полного дампа из базы данных. Вы можете использовать файл pg_dump --clean в любой версии postgres.
Я нашел, как восстановить свои данные.
Исполняемый файл postgresql имеет 64 бита:
# file /opt/local/lib/postgresql82/bin/postgres
/opt/local/lib/postgresql82/bin/postgres: Mach-O 64-bit executable x86_64
Я проверяю, что исполняемый файл postgresql в моей резервной копии имеет 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
Оно работает !
Спасибо вам всем