Обновление системы с помощью Docker

Предварительные условия

  • Сервер, на котором размещена обновляемая версия Юниверс MDM, имеет доступ к интернету.

  • Установлен Git.

  • Установлен Docker Compose (версия выше 1.29).

  • Проект Юниверс MDM был клонирован на сервер.

  • Если возникли ошибки при обновлении, то нужно сбросить в бд конфигурацию (рекомендуется сохранить ее до миграции, т.к. в случае возникновения ошибок будет доступен только сброс параметров) DELETE FROM org_unidata_mdm_system.configuration;.

Обновление системы

Предупреждение

Осуществлен переход с Elasticsearch на OpenSearch. Если обновлять ветку, имея поднятый docker, то старый контейнер elasticsearch будет препятствовать дальнейшим запускам. Поэтому рекомендуется выполнить нижеописанные действия

Предупреждение

В Юниверс MDM версии 6.11 было осуществлено обновление PostgreSQL до версии 16.3, в связи с этим теперь требуется обязательная установка расширения TimescaleDB для корректной работы с большими объемами данных. В зависимости от вашей ОС, проверьте шаги установки TimescaleDB в руководстве по установке системы. Перед установкой рекомендуется проверить совместимость вашей версии PostgreSQL и версии TimescaleDB.

  1. Перед обновлением остановите работу образа Docker Compose через команду docker-compose down.

    • Поднять контейнеры после обновления возможно через команду: docker-compose up --force-recreate -d --remove-orphans. Последняя опция очищает Elasticsearch контейнер.

  2. Войдите в репозиторий Gitlab (доступ к репозиторию с дистрибутивом вашего продукта должен быть получен заранее согласно договору поставки).

  3. Переключитесь на ветку release/6.12.

  4. Извлеките проект. Команда git pull.

  5. Перейдите в каталог с кодом. Пример команды:

    cd universe-platform-deploy
    
  6. При необходимости в файле .env, расположенном в корне проекта, измените параметры для БД и параметры портов. Пример файла .env смотрите по ссылке.

  7. Для запуска системы используйте команду:

    docker-compose up -d
    

Обновление PostgreSQL

Примечание

Ниже приведен пример обновления PostgreSQL с версии 12 на версию 16.3. Вы также можете воспользоваться официальной документацией PostgreSQL.

Совет

Обратите внимание, что команды должны выполняться из директории, где находится файл docker-compose.yaml.

  1. Создайте резервную копию базы данных:

    $ docker exec -t unidata-deploy-postgres-mdm-1 pg_dump -U postgres -d postgres -F c -b -v -f /backup.dump
    
  2. Создайте копию в формате sql (на всякий случай):

    $ docker exec -t unidata-deploy-postgres-mdm-1 pg_dump -U postgres -d postgres > backup.sql
    
  3. Скопируйте файл дампа из контейнера на хост:

    $ docker cp unidata-deploy-postgres-mdm-1:/backup.dump ./backup.dump
    $ docker cp unidata-deploy-postgres-mdm-1:/backup.sql ./backup.sql
    

    где:

    -U postgres — пользователь базы данных; -d your_database_name — имя базы данных; -F c — формат дампа (custom); -b — включает большие объекты в дамп; -v — включает подробный вывод; -f backup.dump — имя файла дампа.

  4. Остановите и удалите контейнеры:

    $ docker-compose down
    
  5. Удалите старый том данных PostgreSQL:

    $ docker volume rm unidata-deploy_mdm-postgres-data
    
  6. Обновите систему.

  7. Восстановите базу данных - запустите только контейнер postgres:

    $ docker-compose up -d postgres-mdm
    
  8. Скопируйте файл дампа в контейнер PostgreSQL 16.3:

    $ docker cp ./backup.dump unidata-deploy-postgres-mdm-1:/backup.dump
    
  9. Восстановите базу данных из дампа:

    $ docker exec -i unidata-deploy-postgres-mdm-1 pg_restore -U postgres -d postgres -v /backup.dump
    
  10. Запустите контейнеры с обновленной конфигурацией:

    $ docker-compose up -d