- Вопрос или проблема
- Или создайте дамп и заново импортируйте ваши данные с помощью
- Обновлено для 16 до 17
- Ответ или решение
- Шаг 1: Подготовительные действия
- Шаг 2: Резервное копирование данных
- Шаг 3: Остановка кластера PostgreSQL 15 и его удаление
- Шаг 4: Обновление кластера PostgreSQL 14 до версии 15
- Шаг 5: Проверка работы обновленного кластера
- Шаг 6: Тестирование приложений
- Шаг 7: Удаление старого кластера
- Шаг 8: Удаление старых пакетов
- Заключение
Вопрос или проблема
Мне интересно, как я могу обновить данные с существующей установки 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
Обновлено для 16 до 17
ссылка: @rubo77 “Убедитесь, что вы работаете…” ответ
Этот процесс сработал для обновления с 16 до 17 на Debian 12.
-
Проверьте кластеры
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
-
Удалите кластер по умолчанию, созданный установкой 17
root@debian12:~# pg_dropcluster 17 main --stop
-
Обновите
root@debian12:~# pg upgradecluster 16 main
Долгий список сообщений подтверждения появится и завершится:
-
Тест. (в этом примере еще не завершено, 16 находится в нерабочем состоянии, и обратите внимание, что порт по умолчанию 5432 был перенесен на 17)
-
Удалите 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. После обновления всегда хорошо вести мониторинг базы данных и приложений, чтобы своевременно устранить возникающие проблемы.