ADCM migration

Contents

ADCM includes tools for data migration from SQlite to PostgreSQL. This functionality is supported from the version 2023.03.27.20 onwards. The functionality is useful if you have upgraded ADCM to the newest version and want to start using PostgreSQL.

In order to migrate from a source SQlite database to a target PostgreSQL database, you must fully prepare the target PostgreSQL database first.

Migration

After you have updated the ADCM docker container to the newest version, you can migrate from SQLite to PostgreSQL via the following commands:

  1. Dump the SQLite database to a file:

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

    -o specifies the file path.

    Essentially, this command requests all data from the SQlite database, then creates a JSON representation of that data, and places it to the specified file system location as a data.json file.

  2. Stop the ADCM container:

    $ docker stop adcm
    $ docker rm adcm
  3. Start the ADCM container in 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:latest

    For SELinux, use -v /opt/adcm:/adcm/data:Z.

    Starting the ADCM container like this, you obtain an empty ADCM instance that has not yet been filled with data.

  4. Load the data from a file to the PostgreSQL database:

    $ docker exec -it adcm /adcm/python/manage.py loaddata /adcm/data/var/data.json
  5. Stop the ADCM container:

    $ docker stop adcm
    $ docker rm adcm
  6. Start the ADCM container:

    $ 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:latest
Found a mistake? Seleсt text and press Ctrl+Enter to report it