Обновление PostgreSQL 9.4 до 14 на Ubuntu
Перейти к навигации
Перейти к поиску
Устанавливаем Postgresql 14
apt update apt install postgresql-14
Инициализируем базу данных
/usr/lib/postgresql/14/bin/pg_ctl initdb -D /mnt/db/14/main/
Миграция
Предварительно проверяем возможность корректной миграции с ключём --check
/usr/lib/postgresql/14/bin/pg_upgrade --old-bindir=/usr/lib/postgresql/9.4/bin/ --new-bindir=/usr/lib/postgresql/14/bin/ --old-datadir=/mnt/db/9.4/main --new-datadir=/mnt/db/14/main/ --check
Если проверка пошла успешно, начинаем процедуру. Время простоя зависит от объема данных.
systemctl stop postgresql@9.4-main.service ln -s /etc/postgresql/9.4/main/postgresql.conf /mnt/db/9.4/main/postgresql.conf
sudo su - postgres /usr/lib/postgresql/14/bin/pg_upgrade --old-bindir=/usr/lib/postgresql/9.4/bin/ --new-bindir=/usr/lib/postgresql/14/bin/ --old-datadir=/mnt/db/9.4/main --new-datadir=/mnt/db/14/main/
Копируем pg_hba.conf и правим конфиг Postgresql 14
cp /etc/postgresql/9.4/main/pg_hba.conf /etc/postgresql/14/main/pg_hba.conf vi /etc/postgresql/14/main/postgresql.conf
Запускаем Postgresql 14 и проверяем
systemctl start postgresql@14-main.service systemctl status postgresql@14-main.service
При апгрейде базы статистика оптимизации не переносится, поэтому запускаем
sudo su - postgres /usr/lib/postgresql/14/bin/vacuumdb --all --analyze-in-stages
Завершающий этап
sudo systemctl enable postgresql@14-main.service sudo systemctl disable postgresql@9.4-main.service
И удаляем старую базу
./delete_old_cluster.sh