Эти инструкции предполагают, что домашняя дерриктория pgsql расположена в /usr/local/pgsql, и данные находится в /usr/local/pgsql/data.
Если ваша конфигурация другая, замените соответствующие пути на свои. Внутренний формат хранения данных типично изменяется в каждом главном выпуске PostgreSQL. Поэтому, если Вы обновляете существующую установку, младше версии “8.3.x”, Вы должны сделать резервную копию, а затем восстановить данные. Если Вы обновляете PostgreSQL “8.3.x”, новая версия может использовать Ваши текущие файлы с данными, таким образом Вы сможете пропустить этапы резервного копирования и восстановления.
1. Делая резервную копию, удостоверьтесь, что Ваша база данных не обновляется. Это не затронет целостность резервной копии, но измененные данные не будут внесены. В случае необходимости, отредактируйте разрешения в файле/usr/local/pgsql/data/pg_hba.conf, чтобы закрыть доступ от всем кроме Вас. Чтобы создать резервную копию БД введите
Если Вам нужно сохранить OIDs используйте ключ -o. Чтобы сделать резервную копию, Вы можете использовать команду pg_dumpall от версии, которой Вы в настоящий момент установлена. Для лучших результатов, однако, следует использовать команду pg_dumpall от PostgreSQL 8.3.5, так как эта версия содержит исправления ошибок и усовершенствования по старшим версиям. Совет может показаться странным, так как Вы еще не установили новую версию, можно последовать ему, если Вы планируете установить новую версию без предварительного удаления старой версии. В этом случае Вы можете сначала заканчивать установку и потом перенести данные. Это также уменьшит время простоя.
2. Остановите старый сервер:
или (в зависимости от установки PgSQL в вашей системе)
3. Переименуйте или удалите старый домашний каталог pgsql. Можно переименовать справочник, вместо того, чтобы удалить его, в случае, если появятся проблемы при установке вы сможете вернуться к старой версии. Имейте в виду, что домашний каталог базы может занимать существенное дисковое пространство. Чтобы переименовать справочник, используйте команду:
4. Установите новую версию PostgreSQL (http://www.postgresql.org/docs/current/static/install-procedure.html)
5. Инициализируйте вновь установленную базу данных (необходимо запускать команды от пользователя под которым будет работать сервер БД, обычно это пользователь pgsql).
6. Восстановите необходимые настройки pg_hba.conf и postgresql.conf.
7. Запустите сервер базы данных (опять же от пользователя под которым должен работать сервер БД):
8. Наконец, восстановите свои данные из резервной копии
Используйте новую версию PgSQL!
Оригинл статьи
upd: перед обновлением тщательно подумайте над тем что делаете, т.к. версии не всегда совместимы, и приложения которые ранее работали с вашим сервером могут перестать работать.
upd2: в случае если вы столкнулись с тем, Что ваши приложения несовместимы с обновленной версией, установите обратно предыдущую версию и замените в ней каталог /usr/local/pgsql/data на ранее сохраненный (если вы его не удалили, а переименовали в п.3).
Если ваша конфигурация другая, замените соответствующие пути на свои. Внутренний формат хранения данных типично изменяется в каждом главном выпуске PostgreSQL. Поэтому, если Вы обновляете существующую установку, младше версии “8.3.x”, Вы должны сделать резервную копию, а затем восстановить данные. Если Вы обновляете PostgreSQL “8.3.x”, новая версия может использовать Ваши текущие файлы с данными, таким образом Вы сможете пропустить этапы резервного копирования и восстановления.
1. Делая резервную копию, удостоверьтесь, что Ваша база данных не обновляется. Это не затронет целостность резервной копии, но измененные данные не будут внесены. В случае необходимости, отредактируйте разрешения в файле/usr/local/pgsql/data/pg_hba.conf, чтобы закрыть доступ от всем кроме Вас. Чтобы создать резервную копию БД введите
pg_dumpall > outputfile
Если Вам нужно сохранить OIDs используйте ключ -o. Чтобы сделать резервную копию, Вы можете использовать команду pg_dumpall от версии, которой Вы в настоящий момент установлена. Для лучших результатов, однако, следует использовать команду pg_dumpall от PostgreSQL 8.3.5, так как эта версия содержит исправления ошибок и усовершенствования по старшим версиям. Совет может показаться странным, так как Вы еще не установили новую версию, можно последовать ему, если Вы планируете установить новую версию без предварительного удаления старой версии. В этом случае Вы можете сначала заканчивать установку и потом перенести данные. Это также уменьшит время простоя.
2. Остановите старый сервер:
pg_ctl stop
или (в зависимости от установки PgSQL в вашей системе)
/etc/rc.d/init.d/postgresql stop
3. Переименуйте или удалите старый домашний каталог pgsql. Можно переименовать справочник, вместо того, чтобы удалить его, в случае, если появятся проблемы при установке вы сможете вернуться к старой версии. Имейте в виду, что домашний каталог базы может занимать существенное дисковое пространство. Чтобы переименовать справочник, используйте команду:
mv /usr/local/pgsql /usr/local/pgsql.old
4. Установите новую версию PostgreSQL (http://www.postgresql.org/docs/current/static/install-procedure.html)
5. Инициализируйте вновь установленную базу данных (необходимо запускать команды от пользователя под которым будет работать сервер БД, обычно это пользователь pgsql).
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
6. Восстановите необходимые настройки pg_hba.conf и postgresql.conf.
7. Запустите сервер базы данных (опять же от пользователя под которым должен работать сервер БД):
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
8. Наконец, восстановите свои данные из резервной копии
/usr/local/pgsql/bin/psql -d postgres -f outputfile
Используйте новую версию PgSQL!
Оригинл статьи
upd: перед обновлением тщательно подумайте над тем что делаете, т.к. версии не всегда совместимы, и приложения которые ранее работали с вашим сервером могут перестать работать.
upd2: в случае если вы столкнулись с тем, Что ваши приложения несовместимы с обновленной версией, установите обратно предыдущую версию и замените в ней каталог /usr/local/pgsql/data на ранее сохраненный (если вы его не удалили, а переименовали в п.3).