Обновление системы с помощью 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.
Перед обновлением остановите работу образа Docker Compose через команду
docker-compose down
.Поднять контейнеры после обновления возможно через команду:
docker-compose up --force-recreate -d --remove-orphans
. Последняя опция очищает Elasticsearch контейнер.
Войдите в репозиторий Gitlab (доступ к репозиторию с дистрибутивом вашего продукта должен быть получен заранее согласно договору поставки).
Переключитесь на ветку release/6.12.
Извлеките проект. Команда
git pull
.Перейдите в каталог с кодом. Пример команды:
cd universe-platform-deploy
При необходимости в файле .env, расположенном в корне проекта, измените параметры для БД и параметры портов. Пример файла .env смотрите по ссылке.
Для запуска системы используйте команду:
docker-compose up -d
Обновление PostgreSQL¶
Примечание
Ниже приведен пример обновления PostgreSQL с версии 12 на версию 16.3. Вы также можете воспользоваться официальной документацией PostgreSQL.
Совет
Обратите внимание, что команды должны выполняться из директории, где находится файл docker-compose.yaml.
Создайте резервную копию базы данных:
$ docker exec -t unidata-deploy-postgres-mdm-1 pg_dump -U postgres -d postgres -F c -b -v -f /backup.dump
Создайте копию в формате sql (на всякий случай):
$ docker exec -t unidata-deploy-postgres-mdm-1 pg_dump -U postgres -d postgres > backup.sql
Скопируйте файл дампа из контейнера на хост:
$ 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
— имя файла дампа.Остановите и удалите контейнеры:
$ docker-compose down
Удалите старый том данных PostgreSQL:
$ docker volume rm unidata-deploy_mdm-postgres-data
Обновите систему.
Восстановите базу данных - запустите только контейнер postgres:
$ docker-compose up -d postgres-mdm
Скопируйте файл дампа в контейнер PostgreSQL 16.3:
$ docker cp ./backup.dump unidata-deploy-postgres-mdm-1:/backup.dump
Восстановите базу данных из дампа:
$ docker exec -i unidata-deploy-postgres-mdm-1 pg_restore -U postgres -d postgres -v /backup.dump
Запустите контейнеры с обновленной конфигурацией:
$ docker-compose up -d