Обновите файл базы данных Postgresql 8.3 до 8.4 - PullRequest
1 голос
/ 01 сентября 2010

Я обновил Ubuntu 8.04 до Ubuntu 10.04.К сожалению, процесс обновления также обновил установку Postgres 8.3 до установки Postgres 8.4.Я чувствую, что, хотя двоичные файлы ядра базы данных были обновлены, сама база данных не была перенесена, следовательно, она не может быть загружена 8.4.Так как формат данных 8.3 не совместим с форматом 8.4, недостаточно изменить postgresql.conf, и я не могу использовать pg_dump с моей установкой 8.4.

Мне нужен способ обновить предыдущую базу с 8.3 до8.4, без доступа к двигателю 8.3, только 8.4.

Любая подсказка?

Ответы [ 3 ]

7 голосов
/ 22 января 2012

Пакеты postgres в Debian и, следовательно, в Ubuntu, имеют очень четко определенный способ обновления с одной версии Postgres на другую.Процедура описана в / usr / share / doc / postgresql-common / README.Debian следующим образом:

Default clusters and upgrading
------------------------------
When installing a postgresql-X.Y package from scratch, a default
cluster 'main' will automatically be created. This operation is
equivalent to doing 'pg_createcluster X.Y main --start'.

Due to this default cluster, an immediate attempt to upgrade an
earlier 'main' cluster to a new version will fail and you need to
remove the newer default cluster first. E. g., if you have
postgresql-8.2 installed and want to upgrade to 8.3, you first install
postgresql-8.3:

  apt-get install postgresql-8.3

Then drop the default 8.3 cluster:

  pg_dropcluster 8.3 main --stop

And then upgrade the 8.2 cluster to 8.3:

  pg_upgradecluster 8.2 main

Лучшее время для этого - до обновление до версии Ubuntu, в которой версия Postgresql, которую вы сейчас используете, была удалена, т.е. в этом примере, в то время как в версии Ubuntu, которая имеет возможность установить как Postgres 8.3, так и Postgres 8.4.В моем случае я прошел путь от веселого до кармического, улучшил 8,3 до 8,4, а затем перешел от кармического к ясному.

Процесс обновления, как описано выше, очень плавный.Команда * pg_upgradecluster * остановит старую версию, перенесет данные, затем запустит новую версию на том же порту, что и старая версия, и, наконец, запустит старую версию на новом порту.

Если вы не мигрировали данные 8.3 postgres до перехода на версию Ubuntu, в которой отсутствует postgres 8.3, миграция по-прежнему проста.Начните с добавления репозитория karmic ubuntu в / etc / apt / sources.list :

deb http://archive.ubuntu.com/ubuntu/ karmic main restricted universe

Установите postgresql-8.3:

apt-get update && apt-get install postgresql-8.3

Отбросьте кластер 8.4, Предупреждение : Это удалит данные из вашей установки postgresql 8.4, если они у вас есть.Но если вы делаете это только потому, что вам нужно обновить 8.3 до 8.4, у вас не будет данных в кластере 8.4.

pg_dropcluster 8.4 main --stop

А затем обновить кластер 8.3 до 8.4:

  pg_upgradecluster 8.3 main

Наконец, удалите пакет postgresql-8.3 и удалите строку jaunty из / etc / apt/sources.list, затем снова запустите apt-get update .

Как обычно, создание резервной копии ваших каталогов postgres перед выполнением любого из вышеперечисленных всегда является хорошей идеей.

0 голосов
/ 02 сентября 2010

Вам нужно будет установить PostgreSQL 8.3 во временную папку из источника, скопировать туда старые данные, запустить Pg, сбросить их данные с помощью pd_dumpall, а затем импортировать эти данные в новый Postgres.

Это невозможно без установки Pg 8.3.

0 голосов
/ 02 сентября 2010

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

Есть проект pg_migrator , который, я думаю, сделает это для вас, хотя я не уверен, нужно ли ему 8.3приложения или исходный код.

...