Миграция ADCM

Содержание

ADCM предоставляет инструменты для миграции данных из SQLite в PostgreSQL. Эта функциональность поддерживается начиная с версии 2023.03.27.20. Функциональность полезна, когда вы обновляете ADCM до последней версии и хотите начать использовать PostgreSQL.

Чтобы осуществить миграцию из исходной базы данных SQLite в целевую базу данных PostgreSQL, сначала необходимо подготовить целевую базу данных PostgreSQL.

Миграция

После обновления Docker-контейнера ADCM до последней версии вы можете осуществить миграцию с SQLite на PostgreSQL, используя следующие команды:

  1. Сделайте дамп базы SQLite в файл:

    $ docker exec -it adcm /adcm/python/manage.py dumpdata --natural-foreign --natural-primary -o /adcm/data/var/data.json

    -o указывает путь к файлу.

    По существу, эта команда получает все данные из базы данных SQLite, затем создаёт JSON-представление этих данных и помещает их в указанное место файловой системы в виде файла data.json.

  2. Остановите контейнер ADCM:

    $ docker stop adcm
    $ docker rm adcm
  3. Запустите контейнер ADCM в режиме MIGRATION_MODE:

    $ docker run -d --restart=always -p 8000:8000 -v /opt/adcm:/adcm/data
    -e DB_HOST="<DATABASE_HOSTNAME_OR_IP_ADDRESS>" -e DB_PORT="<DATABASE_TCP_PORT>"
    -e DB_USER="<DATABASE_USERNAME>" -e DB_NAME="<DATABASE_NAME>"
    -e DB_PASS="<DATABASE_USER_PASSWORD>" -e MIGRATION_MODE=1
    --name adcm hub.arenadata.io/adcm/adcm:<version>

    где <version> — это версия Docker-образа в одном из следующих форматов:

    • <major>.<minor>.<patch> — если необходим конкретный патч ADCM. Пример: 2.0.0.

    • <major>.<minor> — если необходим последний патч в рамках выбранной версии ADCM. Пример: 2.0.

    Обратите внимание, что до выпуска ADCM 2.0.0 для версионирования использовался следующий формат: YYYY.MM.DD.HH.

    Используйте -v /opt/adcm:/adcm/data:Z для SELinux.

    Запуская контейнер ADCM таким образом, вы получаете пустой экземпляр (instance) ADCM, ещё не заполненный данными.

  4. Загрузите данные из файла в базу данных PostgreSQL:

    $ docker exec -it adcm /adcm/python/manage.py loaddata /adcm/data/var/data.json
  5. Остановите контейнер ADCM:

    $ docker stop adcm
    $ docker rm adcm
  6. Запустите контейнер ADCM:

    $ docker run -d --restart=always -p 8000:8000 -v /opt/adcm:/adcm/data
    -e DB_HOST="<DATABASE_HOSTNAME_OR_IP_ADDRESS>" -e DB_PORT="<DATABASE_TCP_PORT>"
    -e DB_USER="<DATABASE_USERNAME>" -e DB_NAME="<DATABASE_NAME>"
    -e DB_PASS="<DATABASE_USER_PASSWORD>" -e MIGRATION_MODE=0
    --name adcm hub.arenadata.io/adcm/adcm:<version>
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней