Как обновить PostgreSQL с версии 8.4 до 9.4?

18

Я хочу обновить свой PostgreSQL с версии 8.4 до 9.4 .

Документация не очень ясно для меня.

  1. Я потеряю свои старые базы данных, если я сделаю обновление?
  2. Как я могу сделать резервную копию моих старых баз данных, если я потеряю их после обновления?
  3. Как я могу обновить свой PSQL?

Мой PostgreSQL работает на сервере CentOS 6.6 .

Алекс Джолиг
источник
Если честно, описание очень понятно на связанной странице. Взятие дампа означает, что у вас есть свалка на случай, если что-то не работает. Это также означает, что вы не потеряете это. Кроме того, на этой странице есть ссылка, указывающая, как на самом деле установить более новую версию - например, в Ubuntu есть postgresql-client-9.4пакет, который содержит psql.
Дезсо
@dezso Итак, если я удалю psql 8.4 и перейду на 9.4, я потеряю свои старые базы данных?
Алекс Джолиг
3
Если вы берете их на свалку, то нет. В любом случае у вас должны быть регулярные резервные копии, которые вы проверяете на возможность восстановления, поэтому это не должно быть проблемой. Кроме того, если вы решите использовать pg_upgrade, он сохранит ваши БД, но в этом случае обязательным также является резервное копирование.
Дезсо
« How can I backup my old databases if» - нет, если . Ваши базы данных почти наверняка будут в порядке после обновления, но у вас всегда должны быть свежие (желательно проверенные) резервные копии при выполнении такой операции, в любом случае, в случае непредвиденных проблем (предположим, наихудших: отключение питания или другая аппаратная неисправность могут частично уйти. Вы в положении, от которого трудно откатиться назад или вперед). В зависимости от вашего обычного плана резервного копирования вам может не потребоваться делать дополнительные резервные копии.
Дэвид

Ответы:

25

Вот как я решил свою проблему.

Обновите Postgresql с 8,4 до 9,4 в Centos

 1. Yum Install PG9.4
 2. wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
 3. yum install pgdg-redhat94-9.4-1.noarch.rpm
 4. yum install postgresql94-server
 5. service postgresql-9.4 initdb
 6. chkconfig postgresql-9.4 on

Резервные данные

 7. su - postgres

 8. pg_dumpall > dump.sql

Восстановить данные

 9. service postgresql stop

 10. service postgresql-9.4 start

 11. su - postgres

 12. psql < dump.sql

Настройка доступа к сети

vi /var/lib/pgsql/9.4/data/postgresql.conf

 1. listen_addresses = '*'
 2. port = 5432

/var/lib/pgsql/9.4/data/pg_hba.conf

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
host    all         all         130.51.79.0/24        md5
host    all         all         10.210.29.0/24        md5
# IPv6 local connections:
host    all         all         ::1/128               ident

Удалить PG8.4

 1. yum remove postgresql
 2. ln -s /usr/pgsql-9.4/bin/psql /usr/local/bin/psql
Алекс Джолиг
источник
3
Я не уверен, почему вы отклонили мое редактирование как «читабельность вреда». Это на самом деле облегчает копирование команд,
nhahtdh
1
Я только что сделал обновление с 9.2 до 9.6, используя этот метод, и это сработало. Благодарность !
EisenHeim
Я думаю, что невозможно использовать pgdump для миграции базы данных с терабайтами данных, например. Есть ли другой способ сделать это?
deFreitas
Для первой команды «Yum Install PG9.4» - это правильная заглавная буква для всего?
Дейв
1
@deFreitas Я немного опоздал, но вы можете использовать его pg_upgradeпри обновлении с> = 8.4 и при использовании того же сервера. pg_upgradeполезен в этом случае и действительно быстрее: на Ubuntu 18 мне потребовалось меньше времени на создание базы данных объемом 1 ГБ, pg_upgradeчем pg_dumpна восстановление. Дело в том, что вам нужно установить и запустить 2 версии postgres на одной машине (конечно, прослушивая разные порты).
EAmez
3

service postgresql-9.4initdb не работал для меня, я должен был использовать sudo /usr/pgsql-9.4/bin/postgresql94-setup initdb(нашел здесь ).

Спасибо за отличные инструкции, я смог обновить с 9.2 до 9.4 без каких-либо проблем, хотя мне пришлось перенастроить мой pg_hba.confфайл, это было тривиально.

Джефф
источник
1

Лучше, чем связать один двоичный файл postgresql94 psql с / usr / (local /) bin, это использовать систему альтернатив:

cd /etc/alternatives/
ls pgsql-* -1 | xargs -L 1 alternatives --auto

Который создает ссылки из исполняемых файлов, mans, confs, ... из postgresql94 на каталоги по умолчанию для CentOS.

Михал Михалач
источник