Обновление PostgreSQL 9.4 до 9.6 на CentOS 7
CentOS Linux release 7.6.1810 (Core)
postgresql94-server.x86_64 9.4.21-1PGDG.rhel7 @pgdg94
postgresql96-server.x86_64 9.6.12-1PGDG.rhel7 @pgdg96
Установка PostgreSQL
sudo yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm sudo yum install postgresql96 postgresql96-server postgresql96-contrib postgresql96-devel sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
Миграция
Запуск pg_upgrade с ключом --check, для проверки перед началом миграции.
Утилита должна запускаться под пользователем postgres.
sudo su - postgres /usr/pgsql-9.6/bin/pg_upgrade --old-bindir=/usr/pgsql-9.4/bin/ --new-bindir=/usr/pgsql-9.6/bin/ --old-datadir=/var/lib/pgsql/9.4/data/ --new-datadir=/var/lib/pgsql/9.6/data/ --check
Если проверка пошла успешно, начинаем процедуру. Время простоя зависит от объема данных.
sudo systemctl stop postgresql-9.4.service
sudo su - postgres /usr/pgsql-9.6/bin/pg_upgrade --old-bindir=/usr/pgsql-9.4/bin/ --new-bindir=/usr/pgsql-9.6/bin/ --old-datadir=/var/lib/pgsql/9.4/data/ --new-datadir=/var/lib/pgsql/9.6/data/
Необходимы права для авторизации пользователя postgres через socket
pg_hba.conf
# "local" is for Unix domain socket connections only local all all peer
sudo systemctl start postgresql-9.6.service sudo systemctl status postgresql-9.6.service
sudo su - postgres ./analyze_new_cluster.sh
Завершающий этап
sudo systemctl enable postgresql-9.6.service sudo systemctl disable postgresql-9.4.service
sudo yum autoremove postgresql94
sudo su - postgres ./delete_old_cluster.sh
Обсуждение