пятница, 22 апреля 2011 г.

Обновление PostgreSQL до нового минорного релиза

Как известно, в разных версиях двочный формат базы несовместим и поэтому при переходе на более новую (или старую) приходится делать дамп и релоад всех таблиц. Сделать это достаточно просто.
Для начала нужно отредактировать pg_hba.conf, таким образом, чтобы не дать обычным пользователям обращаться к базе, только после этого можно начинать делать дамп. Далее запускаем дамп:
# pg_dumpall > pg_dump.sql
следующим шагом останавливаем демон:
# /usr/local/etc/rc.d/postgesql stop
После этого можно перейти непосредственно к обновлению. Я предпочитаю portuupgrade
env DISABLE_CONFLICTS=YES portupgrade -o databases/postgresql90-server postgresql-server databases/postgresql90-client postgresql-client
Далее нужно проинициализировать каталог с данными, старый желательно сохранить на всякий поражный, поэтому удалять мы его не будем, а лишь переименуем в data.bak, создадим новый и поставим владельца pgsql:pgsql

# cd $DATADIR
# mv data data.old
# mkdir data
# chown pgsql:pgsql data
# /usr/local/etc/rc.d/postgesql initdb

Кластер проинициализирован, теперь скопируем файлы конфигурации (postgresql.conf, pg_hba.conf) из старого каталога в новый. Вносим необходимые изменения, для этого нужно заранее ознакомиться с информацией о релизе новой версии.

Когда с этим покончено запускаем новую версию и восстанавливаем дамп:

# /usr/local/etc/rc.d/postgresql start
# psql -U pgsql template1 -f  pg_dump.sql

Дамп восстановился, теперь можно открыть доступ клиентам в pg_hba.conf.
После этого желательно обновить и клиенсткие библиотеки, ну и удалить старый каталог данных.

Комментариев нет:

Отправить комментарий