Документация по PostgreSQL 8.2devel | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 14. Инструкции по установке | Fast Forward | Next |
Внутренний формат хранения данных изменяется с выходом новых версий PostgreSQL. Таким образом, если вы производите обновление с установленной версии, которая отличается от "8.2.x", вы должны выполнить резервное копирование и восстановление как описано здесь. Данные инструкции подразумевают, что у вас уже установлен PostgreSQL в каталог /usr/local/pgsql и что область данных находится в каталоге /usr/local/pgsql/data. Если у вас использованы другие каталоги, то подставьте их вместо указанных выше.
Убедитесь, что ваши базы данных не обновляются во время или после осуществления резервного копирования. Это не окажет влияения на целостность резервной копии, но измененные данные, естественно, включены в неё не будут. Если необходимо, исправьте права доступа в файле /usr/local/pgsql/data/pg_hba.conf (или его эквиваленте) чтобы запретить доступ для всех кроме вас.
Чтобы создать резервную копию баз данных, введите:
pg_dumpall > outputfile
Если вам нужно сохранить колонки OID (например, когда вы используете их как внешние ключи), то используйте опцию -o при запуске pg_dumpall.
Чтобы сделать резервную копию вы можете использовать команду pg_dumpall именно от той версии СУБД, которая установлена в данный момент. Однако, для наилучших результатов попытайтесь использовать pg_dumpall из PostgreSQL 8.2devel, так как в этой версии исправленны ошибки и произведены улучшения по сравнению со старыми версиями. С одной стороны такой совет кажется идеосинкразическим, так как у вас пока не установленной новой версии, но ему вполне можно следовать, если вы планируете использовать новоую версию параллельно со старой. В этом случае, вы можете спокойно произвести компиляцию и установку новой версии, а затем перенести в неё данные из старой. Такой подход к тому же уменьшит время простоя вашей СУБД.
Если вы устанавливаете новую версию в то же самое место что и старую, вы должны как минимум до начала установки новых файлов, остановить старый сервер, например командой:
pg_ctl stop
В системах, где запуск PostgreSQL происходит во время загрузки, преположительно должен существовать файл, который также производит и останов. Например, в системе Red Hat Linux можно использовать для остановки сервера команду
/etc/rc.d/init.d/postgresql stop
Если вы производите установку новой версии в то же место, где была старая, то хорошо также переместить куда-нибудь старую версию, чтобы вы могли откатится на нее, если при установке новой версии возникнут проблемы. Это можно сделать, например, командой:
mv /usr/local/pgsql /usr/local/pgsql.old
После того как вы установили PostgreSQL 8.2devel, создайте новый каталог для баз данных и запутите новую версию сервера. Помните, что вы должны запустить данные ниже команды из под специального пользователя postgres (который уже существует, если вы производите обновление):
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
Наконец, восстановите ваши данные командой
/usr/local/pgsql/bin/psql -d postgres -f outputfile
используя новый psql.
Далее эта темы обсуждается в документе Section 23.4, который рекомендуется прочесть в любом случае.