Назад | Перейти на главную страницу

Авария миграции Postgresql?

Я использую Gentoo. Я обновился с Postgresql 8.2.7 до 9.0.1. Где-то в процессе обновления старый Postgresql не был объединен, вместо того, чтобы быть установленным, поэтому его больше нет. Старая версия также ушла из портаджа, поэтому я не могу просто восстановить ее. У меня есть каталог данных Postgresql с моей базой данных, но он бесполезен, потому что Postgresql 9.0.1 отказывается запускать его из-за несоответствия версии.

Я пробовал много решений, но не смог это исправить.

Как я могу заставить базу данных в моем старом каталоге данных 8.2.7 работать с Postgresql 9.0.1?

Официальный способ перенести базу данных PostgreSQL в новую основную версию - сделать дамп и повторно импортировать:

Как правило, внутренний формат хранения данных может изменяться между основными выпусками PostgreSQL (где меняется число после первой точки). [...] При обновлении между совместимыми версиями вы можете просто заменить исполняемые файлы и повторно использовать каталог данных на диске. В противном случае вам нужно сделать резервную копию ваших данных и восстановить их на новом сервере.

http://www.postgresql.org/docs/8.4/static/migration.html

Так что вам понадобится работающая установка 8.2.7. Один из вариантов - вручную установить 8.2.7 в вашу систему (либо собрав его самостоятельно, либо загрузив какой-либо двоичный пакет, например, из Debian, а затем распаковав и установив его вручную). Другой вариант - просто установить дистрибутив с версией 8.2.7 (на запасном оборудовании, на альтернативном разделе или на виртуальной машине).

Затем скопируйте туда свои файлы, запустите базу данных и выполните pg_dumpall. Возможно, вам придется настроить установку PostgreSQL, чтобы она принимала ваши файлы данных.

P.S. Надеюсь, мне не нужно подчеркивать, что вы должны сначала проверить, можно ли без проблем восстановить резервную копию файлов вашей базы данных (которая, безусловно, у вас есть), на всякий случай ...

вместо того, чтобы полностью вручную собирать из исходников, вы также можете создать свой собственный оверлей, найти старый ебилд где-нибудь в Интернете и заново установить 8.2 из своего оверлея.