Миграция с SQLite на PostgreSQL
|
ВАЖНО
|
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 \ --name adcm\ --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 \ 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 \ --name adcm \ --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 \ hub.arenadata.io/adcm/adcm:<version>