Обновите свою базу данных postgreSQL с 14 до 15 на Debian

Вопрос или проблема

Мне интересно, как я могу обновить данные с существующей установки PostgreSQL 14 до 15.

Я автоматически установил PG 15 через apt, так что вижу

# dpkg -l | grep ii | cut -d" " -f3 | grep postgresql-1

postgresql-14
postgresql-15

Но данные все еще находятся в PG 14.

Есть две службы

service postgresql@14-main status

и

service postgresql@15-main status

Убедитесь, что вы все еще работаете на старом кластере 14, затем создайте резервную копию ваших данных с помощью

pg_dumpall -F t > ~/backup_postgres_all_dbs.tar

Остановите еще пустой установленный кластер postgreSQL 15 и удалите его.

pg_dropcluster 15 main --stop

Обновите кластер 14 до последней версии (которая на момент написания является 15)

pg_upgradecluster 14 main

Это может занять несколько часов. После завершения проверьте, что обновленный кластер работает:

service postgresql@14-main stop
service postgresql@15-main start

Ваш кластер 14 теперь должен быть «вынут». Вы можете подтвердить это, запустив:

pg_lsclusters

Ver Cluster Port Status Owner    Data directory              Log file
14  main    5433 down   postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log
15  main    5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log

Проверьте, работают ли все приложения, использующие postgreSQL (возможно, адаптируйте порт в вашей конфигурации psql-15). Если все в порядке, удалите кластер 14 с помощью

# !Убедитесь, что вы действительно хотите это сделать!
# !НЕ БУДЬТЕ СЛИШКОМ БЫСТРЫМИ!!! # pg_dropcluster 14 main

и удалите старые пакеты.

apt-get purge postgresql-14 postgresql-client-14

(Примечание: это, скорее всего, также работает так же на Kali)

адаптировано из: https://www.paulox.net/2022/04/28/upgrading-postgresql-from-version-13-to-14-on-ubuntu-22-04-jammy-jellyfish/

Или создайте дамп и заново импортируйте ваши данные с помощью

sudo -u postgres pg_dumpall --cluster 14/main > ~/backup_postgres_all_dbs.sql
sudo -u postgres psql -d postgres --cluster 15/main -f ~/backup_postgres_all_dbs.sql

см. https://unix.stackexchange.com/a/707827/20661

Обновлено для 16 до 17

ссылка: @rubo77 “Убедитесь, что вы работаете…” ответ

Этот процесс сработал для обновления с 16 до 17 на Debian 12.

  1. Проверьте кластеры

    root@debian12:~# pg_lsclusters Ver Cluster Port Status Owner Data directory Log file

    16 main 5432 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log

  2. Удалите кластер по умолчанию, созданный установкой 17

    root@debian12:~# pg_dropcluster 17 main --stop

  3. Обновите

    root@debian12:~# pg upgradecluster 16 main

Долгий список сообщений подтверждения появится и завершится:

  1. Тест. (в этом примере еще не завершено, 16 находится в нерабочем состоянии, и обратите внимание, что порт по умолчанию 5432 был перенесен на 17)

  2. Удалите 16 pg_dropcluster 16 main (в этом примере, в ожидании)

Ответ или решение

Чтобы выполнить апгрейд базы данных PostgreSQL с версии 14 на версию 15 в операционной системе Debian, необходимо следовать плану, который включает подготовительные шаги, резервное копирование, остановку старого кластера, выполнение обновления и тестирование новой версии. Ниже приведены детализированные инструкции для успешного выполнения данной задачи.

Шаг 1: Подготовительные действия

Перед началом процесса обновления убедитесь, что у вас установлены обе версии PostgreSQL и что вы используете версию 14. Для проверки установленных версий выполните команду:

dpkg -l | grep postgresql

Вы должны увидеть что-то вроде следующего:

postgresql-14
postgresql-15

Шаг 2: Резервное копирование данных

Перед обновлением очень важно создать полную резервную копию всех данных. Используйте команду pg_dumpall для создания резервной копии:

pg_dumpall -F t > ~/backup_postgres_all_dbs.tar

Эта команда создаст файл резервной копии всех баз данных в формате tar.

Шаг 3: Остановка кластера PostgreSQL 15 и его удаление

Если при установке PostgreSQL 15 был автоматически создан новый кластер, его нужно остановить и удалить, чтобы избежать конфликтов:

pg_dropcluster 15 main --stop

Шаг 4: Обновление кластера PostgreSQL 14 до версии 15

Теперь выполните команду для обновления кластера PostgreSQL 14:

pg_upgradecluster 14 main

Этот процесс может занять некоторое время в зависимости от объема данных в кластере. По завершении обновления вы увидите уведомление о том, что обновление прошло успешно.

Шаг 5: Проверка работы обновленного кластера

После завершения процесса обновления остановите кластер PostgreSQL 14 и запустите кластер PostgreSQL 15:

service postgresql@14-main stop
service postgresql@15-main start

Проверьте состояние кластеров, используя команду:

pg_lsclusters

Вы должны увидеть, что кластер 14 отключен, а кластер 15 работает:

Ver Cluster Port Status Owner    Data directory               Log file
14  main    5433 down   postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log
15  main    5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log

Шаг 6: Тестирование приложений

Проверьте, работают ли все ваши приложения с новой версией PostgreSQL. Убедитесь, что в конфигурациях их подключений (например, в файле psql) указаны правильные порты и параметры для новой версии.

Шаг 7: Удаление старого кластера

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

pg_dropcluster 14 main

Шаг 8: Удаление старых пакетов

Наконец, уберите старые пакеты для освобождения места на диске:

apt-get purge postgresql-14 postgresql-client-14

Заключение

Следуя вышеуказанным шагам, вы успешно обновите вашу базу данных PostgreSQL с версии 14 на 15 на Debian. После обновления всегда хорошо вести мониторинг базы данных и приложений, чтобы своевременно устранить возникающие проблемы.

Оцените материал
Добавить комментарий

Капча загружается...