Обновление базы данных до версии PostgreSQL 18

Что бы обновиться с базы данных PostgreSQL 14.5.0(17.4.0) на версию PostgreSQL 18, нужно предварительно сделать бэкап текущей базы данных, руководствуясь пунктом Резервное копирование. Для этого выполните скрипт dump.sh, который создаст бэкап базы данных на текущий момент в директории /opt/dppm/postgres_dump

./dump.sh -p /opt/dppm/postgres_dump

register imageСоздание бэкапа базы данных перед обновлением

  • Перейти в директорию /var/lib/docker/volumes/, найти и переименовать текущий docker volume базы данных PostgreSQL 14.5.0. Внимание! Перед переименованием docker volume система должна быть остановлена. Все команды необходимо выполнять от имени администратора:
# Переходим в директорию
cd /var/lib/docker/volumes/
# Ищем текущий docker volume
ls –lha | grep postgres
# В примере, текущий docker volume переименовывается в planr_postgresql_14
mv planr_postgresql planr_postgresql_14

register imageПереименование docker volume

При необходимости, старый docker volume базы данных PosgreSQL 14.5.0 можно заархивировать для экономии места следующей командой:

tar --remove-files -cvzf planr_postgresql_14.tar.gz ./planr_postgresql_14
  • Затем, нужно удалить старый volume planr_postgresql следующей командой:
# Удаляем volume planr_postgresql
docker volume rm planr_postgresql
  • Далее, необходимо отредактировать docker-compose.yml файл, который по умолчанию находится в директориии /opt/dppm/planr. В docker-compose.yml файл, нужно вставить следующий блок конфигурации PostgreSQL:
  postgres:
    image: 'postgres:${POSTGRES_VERSION:-18.1}'
    container_name: postgres
    user: postgres
    environment:
      POSTGRES_USER: planr
      POSTGRES_PASSWORD: planr
      POSTGRES_DB: planr
      POSTGRES_MAX_CONNECTIONS: 800
# postgress ports
    # ports:
    #   - 5432:5432
    volumes:
      - postgresql:/var/lib/postgresql
    networks: *default-network
    restart: *default-restart-policy
    profiles: ['postgres', 'all']
    shm_size: '2gb'
    healthcheck:
      test: pg_isready -U planr
      interval: 10s
      retries: 20
      start_period: 10s

Старый профиль конфигурации PostgreSQL 14, можно удалить или закомментировать.

register imageDocker-compose файл. Конфигрурация PostgreSQL

  • Перейти в директорию /opt/dppm/planr и произвести старт системы, выполнив скрипт ./start.sh
  • После успешного запуска системы, нужно восстановить базу данных из бэкапа, руководствуясь пунктом документации Восстановление базы данных из бэкапа. Во время восстанволения базы данных из бэкапа, ошибку ERROR: role "postgres" does not exist, нужно игнорировать:

register imageВосстановление базы данных из бэкапа

Установка PostgreSQL 18 во время обновления системы

Чтобы установить базу данных PostgreSQL 18 во время обновления системы PLAN-R необходимо:

  • Сделать бэкап базы данных, руководствуясь пунктом Резервное копирование. Для этого выполните скрипт dump.sh, который создаст бэкап базы данных на текущий момент в директории /opt/dppm/postgres_dump
./dump.sh -p /opt/dppm/postgres_dump

register imageСоздание бэкапа базы данных перед обновлением

  • Выполнить пункт документации Подготовка к обновлению системы
  • Перейти в директорию /var/lib/docker/volumes/, найти и переименовать текущий docker volume базы данных PostgreSQL 14.5.0. Внимание! Перед переименованием docker volume система должна быть остановлена. Все команды необходимо выполнять от имени администратора:
# Переходим в директорию
cd /var/lib/docker/volumes/
# Ищем текущий docker volume
ls –lha | grep postgres
# В примере, текущий docker volume переименовывается в planr_postgresql_14
mv planr_postgresql planr_postgresql_14

register imageПереименование docker volume

При необходимости, старый docker volume базы данных PosgreSQL 14.5.0 можно заархивировать для экономии места командой:

tar --remove-files -cvzf planr_postgresql_14.tar.gz ./planr_postgresql_14
  • Затем, нужно удалить старый volume planr_postgresql следующей командой:
# Удаляем volume planr_postgresql
docker volume rm planr_postgresql
  • Далее необходимо восстановить базу данных из бэкапа, руководствуясь пунктом документации Восстановление базы данных из бэкапа, выполнить запуск системы и убедиться, что обновление базы данных PostgreSQL прошло успешно. Во время восстановления базы данных из бэкапа, ошибку ERROR: role "postgres" does not exist, нужно игнорировать:

register imageВосстановление базы данных из бэкапа


509.3-ed4a1aa7