PostgreSQL upgrade

Всем привет, помогите обновить PostgreSQL, раньше была версия 9.0, а сейчас пакет обновился до 9.1. Раньше не имел дела с этой СУБД, буду признателен за подсказку. Спасибо.
пробую делать вот так и не выходит
[[email protected] ~]$ pg_upgrade --check -d /var/lib/postgres/olddata/ -D /var/lib/postgres/data/ -b /opt/pgsql-9.0/bin/ -B /usr/bin/
Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories                 ok
Checking cluster versions
This utility can only upgrade to PostgreSQL version 9.1.
Failure, exiting
ну похоже что он хочет сказать что может помоч апнуться только до v 9.1
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
та это понятно, хотя странно поставил postgresql-old-upgrade 9.0.5-1 и в olddata данные предыдущей версии. по идее обновляюсь до новой версии т.е. 9.1, и что то не выходит
А что нельзя сделать дамп а потом с него развернуть?
anthonio
А что нельзя сделать дамп а потом с него развернуть?
а можно подробнее?
@rtem
anthonio
А что нельзя сделать дамп а потом с него развернуть?
а можно подробнее?
На рабочем сервере делаем дамп необходимой базы данных:
$ /usr/bin/pg_dump -U username -Z 5 -cO database > psql_dump.gz
Потом делаем что угодно (обновляем postgresql, да хоть всю систему сносим и заново ставим)
Или можно удалить базу данных:
$ sudo bash
$ su - postgres
$ dropdb database
$ createdb database
И заливаем дамп
$ zcat psql_dump.gz | psql -U username database
А если сервер уже обновился? т.е. уже обновленная версия и он не стартует потому что пишет, что базы для работы со старой версией
https://wiki.archlinux.org/index.php/Downgrading_Packages ?
Все обновил. Как оказалось, все не так сложно, а дело обстоит так: после того как обновилась сама PostgreSQL запустить сервер не получается. Ставим пакет postgresql-old-upgrade, переключаемся на пользователя postgres.
Идем в каталог /var/lib/postgres/ и выполняем команду
mv /var/lib/postgres/data /var/lib/postgres/olddata

Потом запускаем сервер, ждем когда он создаст новый каталог /var/lib/postgres/data и останавливаем сервер (да, перед тем как остановить я подключился к PostgreSQL и обновил роль для пользователя posgres, установил ему пароль ALTER ROLE postgres WITH PASSWORD ‘password’;).
Так как у меня была настроена авторизация к СУБД по паролю и метод md5 в /var/lib/postgres/data/pg_hba.conf (и в olddata/pg_hba.conf)
то в каталоге /var/lib/postgres/ я создал файл .pgpass с таким содержимым *:*:*:*:password (хост, порт, база, пользователь как написано на офф. сайте можно прописать звездочками, главное пароль указать который используется) . дайте ему 0600 права и потом запускаем проверку
[[email protected] ~]$ pg_upgrade --check -d /var/lib/postgres/olddata/ -D /var/lib/postgres/data/ -b /opt/pgsql-9.0/bin/ -B /usr/bin/ --old-port=5432 --new-port=5433 --user=postgres
Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories                 ok
Checking cluster versions                                   ok
Checking database user is a superuser                       ok
Checking for prepared transactions                          ok
Checking for reg* system oid user data types                ok
Checking for contrib/isn with bigint-passing mismatch       ok
Creating catalog dump                                       ok
Checking for prepared transactions                          ok
Checking for presence of required libraries                 ok
стопорим старую версию
[[email protected] ~]$ /opt/pgsql-9.0/bin/pg_ctl stop -D /var/lib/postgres/olddata/
waiting for server to shut down.... done
server stopped
и запускаем само обновление
[[email protected] ~]$ pg_upgrade  -d /var/lib/postgres/olddata/ -D /var/lib/postgres/data/ -b /opt/pgsql-9.0/bin/ -B /usr/bin/ --old-port=5432 --new-port=5433 --user=postgres
Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories                 ok
Checking cluster versions                                   ok
Checking database user is a superuser                       ok
Checking for prepared transactions                          ok
Checking for reg* system oid user data types                ok
Checking for contrib/isn with bigint-passing mismatch       ok
Creating catalog dump                                       ok
Checking for prepared transactions                          ok
Checking for presence of required libraries                 ok
| If pg_upgrade fails after this point, you must
| re-initdb the new cluster before continuing.
| You will also need to remove the ".old" suffix
| from /var/lib/postgres/olddata/global/pg_control.old.
Performing Upgrade
------------------
Adding ".old" suffix to old global/pg_control               ok
Analyzing all rows in the new cluster                       ok
Freezing all rows on the new cluster                        ok
Deleting new commit clogs                                   ok
Copying old commit clogs to new server                      ok
Setting next transaction id for new cluster                 ok
Resetting WAL archives                                      ok
Setting frozenxid counters in new cluster                   ok
Creating databases in the new cluster                       ok
Adding support functions to new cluster                     ok
Restoring database schema to new cluster                    ok
Removing support functions from new cluster                 ok
Restoring user relation files
                                                            ok
Setting next oid for new cluster                            ok
Creating script to delete old cluster                       ok
Upgrade complete
----------------
| Optimizer statistics are not transferred by pg_upgrade
| so consider running:
|       vacuumdb --all --analyze-only
| on the newly-upgraded cluster.
| Running this script will delete the old cluster's data files:
|       /var/lib/postgres/delete_old_cluster.sh
и все. Файл .pgpass можете удалить или оставить смотрите сами. Все от root запускаем PostgreSQL и все работает.
 
Зарегистрироваться или войдите чтобы оставить сообщение.