Миграция ADCM
ADCM предоставляет инструменты для миграции данных из SQLite в PostgreSQL. Эта функциональность поддерживается начиная с версии 2023.03.27.20. Функциональность полезна, когда вы обновляете ADCM до последней версии и хотите начать использовать PostgreSQL.
Чтобы осуществить миграцию из исходной базы данных SQLite в целевую базу данных PostgreSQL, сначала необходимо подготовить целевую базу данных PostgreSQL.
Миграция
После обновления Docker-контейнера ADCM до последней версии вы можете осуществить миграцию с SQLite на PostgreSQL, используя следующие команды:
-
Сделайте дамп базы 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.
-
Остановите контейнер ADCM:
$ docker stop adcm $ docker rm adcm
-
Запустите контейнер 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
.
ВАЖНО-
latest
использовался для ранних версий ADCM и, начиная с версии2.0.0
, больше не поддерживается. -
До выпуска ADCM 2.0.0 для версионирования использовался следующий формат:
YYYY.MM.DD.HH
.
Используйте
-v /opt/adcm:/adcm/data:Z
для SELinux.Запуская контейнер ADCM таким образом, вы получаете пустой экземпляр (instance) ADCM, ещё не заполненный данными.
-
-
Загрузите данные из файла в базу данных PostgreSQL:
$ docker exec -it adcm /adcm/python/manage.py loaddata /adcm/data/var/data.json
-
Остановите контейнер ADCM:
$ docker stop adcm $ docker rm adcm
-
Запустите контейнер 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>