Обновление контейнера PostgreSQL 12 и ниже до версии 18

При обновлении PostgreSQL до основной версии необходимо обновить версию image запущенного пода до более поздней версии PostgreSQL. Также нужно пересоздать хранилище для обновления данных, которые хранятся в файлах данных PostgreSQL.

Обновление контейнера PostgreSQL состоит из нескольких этапов:

  1. Резервное копирование базы данных.
  2. Установка PostgreSQL 18 в kubernetes-кластер.
  3. Пересоздание хранилища.
  4. Запуск PostgreSQL.
  5. Восстановление базы данных.

Шаг 1. Резервное копирование базы данных

Перед выполнением любых действий, связанных с обновлением, создайте резервную копию данных и конфигурации PostgreSQL. О том, как это сделать, читайте в статье «Резервное копирование и восстановление баз данных».

начало внимание

Если на сервере PostgreSQL имеются сторонние базы данных, их резервные копии также необходимо создать.

конец внимание

Резервное копирование базы данных PostgreSQL без использования утилиты elma365-backupper

Шаг 2. Установка PostgreSQL 18 в kubernetes-кластер

  1. Остановите контейнер postgres:

kubectl scale -n <<namespace>> statefulset -l app.kubernetes.io/instance=<<namespace>>,app.kubernetes.io/name=postgresql --replicas 0

  1. Сохраните конфигурацию statefulsets пода postgres в файл postgresql.yaml:

kubectl get statefulsets -n <<namespace>> -lapp.kubernetes.io/instance=<<namespace>>,app.kubernetes.io/name=postgresql -o yaml > path/to/postgresql.yaml

  1. Откройте файл postgresql.yaml командой:

sudo nano path/to/postgresql.yaml

В этом файле замените версию image на public.ecr.aws/bitnami/postgresql:18.1.0-debian-12-r3.

  1. Примените изменения для пода postgres:

kubectl apply -f path/to/postgresql.yaml

Шаг 3. Пересоздание хранилища

Удалите хранилище postgresql:

kubectl delete pvc -n <<namespace>> -l app.kubernetes.io/instance=<<namespace>>,app.kubernetes.io/name=postgresql --wait=false

Шаг 4. Запуск PostgreSQL

Запустите контейнер postgres:

kubectl scale -n <<namespace>> statefulset -l app.kubernetes.io/instance=<<namespace>>,app.kubernetes.io/name=postgresql --replicas 1

Шаг 5. Восстановление базы данных

О том, как это сделать, читайте в статье «Резервное копирование и восстановление баз данных».

Восстановление базы данных PostgreSQL без использования утилиты elma365-backupper