Это руководство, которое описывает процесс миграции с PostgreSQL 14 на PostgreSQL 16 на сервере Ubuntu без потери данных.
Полное резервное копирование данных, установка новой версии, восстановление данных, удаление старой версии все этапы организованы в пошаговом формате.

PostgreSQL upgrade from 14 to 16 symbol

1. Проверка текущей версии PostgreSQL и статуса кластера

psql --version
pg_lsclusters

Убедитесь, что 14/main активен в состоянии кластера.


2. Полное резервное копирование данных

PostgreSQL может делать резервное копирование всей базы данных, пользователей и информации о правах с помощью команды pg_dumpall.

sudo -u postgres pg_dumpall > ~/pg_backup_all.sql

Пример проверки резервного копирования (опционально)

head ~/pg_backup_all.sql
tail ~/pg_backup_all.sql

Проверка наличия файла и его объема

ls -lh ~/pg_backup_all.sql

3. Установка PostgreSQL 16

3-1. Регистрация в официальном репозитории

sudo apt update
sudo apt install wget ca-certificates -y
wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/pgdg.gpg
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" |   sudo tee /etc/apt/sources.list.d/pgdg.list

3-2. Установка PostgreSQL 16

sudo apt update
sudo apt install postgresql-16 -y

После завершения установки проверьте статус кластера еще раз.

pg_lsclusters

4. Переключение кластера

Остановите существующую 14 версию и запустите 16 версию.

sudo systemctl stop postgresql@14-main
sudo systemctl start postgresql@16-main

5. Восстановление данных (на PostgreSQL 16)

Перед восстановлением убедитесь, что вы можете подключиться к ново установленной версии 16.
(номер порта можно проверить с помощью pg_lsclusters)

sudo -u postgres psql -p 5433

Если подключение успешно, восстановите данные с помощью следующей команды:

sudo -u postgres psql < ~/pg_backup_all.sql

Вы можете проверить наличие ошибок с помощью less ~/pg_backup_all.sql | grep ERROR.


6. Удаление PostgreSQL 14 (опционально)

После того как обновление и восстановление данных завершены и проблем нет, вы можете удалить PostgreSQL 14:

sudo pg_dropcluster 14 main --stop
sudo apt remove postgresql-14 -y

Заключение

Этот процесс будет полезен для тех, кто хочет обновить и мигрировать с PostgreSQL 14 на 16 на сервере Ubuntu.
Резервное копирование данных → Установка новой версии → Восстановление → Удаление старой версии следуйте этому порядку, чтобы безопасно переключить версии.

Имя пользователя сервера, номер порта и т.д. вы можете настроить под свою среду.