При обновлении PostgreSQL до основной версии необходимо обновить версию image
запущенного пода до более поздней версии PostgreSQL. Также нужно пересоздать хранилище для обновления данных, которые хранятся в файлах данных PostgreSQL.
Обновление контейнера PostgreSQL состоит из пяти этапов:
- Резервное копирование базы данных.
- Установка PostgreSQL 15 в kubernetes-кластер.
- Пересоздание хранилища.
- Запуск PostgreSQL.
- Восстановление базы данных.
Шаг 1. Резервное копирование базы данных
Перед выполнением любых действий, связанных с обновлением, создайте резервную копию данных и конфигурации PostgreSQL. О том, как это сделать, читайте в статье «Резервное копирование и восстановление баз данных».
начало внимание
Если на сервере PostgreSQL имеются сторонние базы данных, их резервные копии также необходимо создать.
конец внимание
Резервное копирование базы данных PostgreSQL без использования утилиты elma365-backupper
kubectl port-forward -n <<namespace>> pods/postgres-0 5477:5432
pg_dump -h localhost -p 5477 -U postgres -W elma365 -Fc > path/to/elma365.bak |
Шаг 2. Установка PostgreSQL 15 в kubernetes-кластер
- Остановите контейнер
postgres
:
kubectl scale -n <<namespace>> statefulset -l app.kubernetes.io/instance=<<namespace>>,app.kubernetes.io/name=postgresql --replicas 0
- Сохраните конфигурацию
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
- Откройте файл
postgresql.yaml
командой:
sudo nano path/to/postgresql.yaml
В этом файле замените версию image
на docker.io/bitnami/postgresql:15.4.0
.
- Примените изменения для пода
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
kubectl port-forward -n <<namespace>> pods/postgres-0 5477:5432
pg_restore -h localhost -p 5477 -U postgres -W -Fc -d elma365 < elma365.bak |