harbor/migration
2016-07-12 23:19:35 +08:00
..
migration_harbor update db migration code to update version and add index 2016-07-07 19:06:55 +08:00
alembic.sql add data migration module 2016-05-09 14:41:28 +08:00
alembic.tpl add data migration module 2016-05-09 14:41:28 +08:00
changelog.md data migration script to 0.2.0 2016-06-22 12:22:02 +08:00
db_meta.py update db migration code to update version and add index 2016-07-07 19:06:55 +08:00
Dockerfile fill sysadmin_flag&update_time&add test function 2016-05-13 17:57:10 +08:00
migration.cfg add data migration module 2016-05-09 14:41:28 +08:00
prepare.sh fix bugs 2016-05-09 18:50:04 +08:00
README.md update migration guide 2016-07-12 23:19:35 +08:00
run.sh fill sysadmin_flag&update_time&add test function 2016-05-13 17:57:10 +08:00

Harbor upgrade and database migration guide

When upgrading your existing Habor instance to a newer version, you may need to migrate the data in your database. Refer to change log to find out whether there is any change in the database. If there is, you should go through the database migration process. Since the migration may alter the database schema, you should always back up your data before any migration.

If your install Harbor for the first time, or the database version is the same as that of the lastest version, you do not need any database migration.

NOTE: You must backup your data before any data migration.

Upgrading Harbor and migrating data

  1. Log in to the machine that Harbor runs on, back up Harbor's configuration files.

    mkdir -p /tmp/harbor/config
    cp -r Deploy/config /tmp/harbor/config
    cp Deploy/harbor.cfg /tmp/harbor
    
  2. Next, stop and remove existing Harbor service if it is still running:

    cd Deploy/
    docker-compose down
    
  3. Change to the parent directory of Harbor's source code folder (usually is the parent directory of harbor/ ). Get the lastest source code from Github to overwrite the existing code:

    cd ../..
    git clone https://github.com/vmware/harbor
    
  4. Before upgrading Harbor, perform database migration first. The directory migration/ contains the tool for migration. The first step is to update values of db_username, db_password, db_port, db_name in migration.cfg so that they match your system's configuration.

  5. The migration tool is delivered as a container, so you should build the image from its Dockerfile:

    cd migration/
    
    docker build -t migrate-tool .
    
  6. Back up database to a directory such as /path/to/backup. You need to create the directory if it does not exist.

    docker run -ti --rm -v /data/database:/var/lib/mysql -v /path/to/backup:/harbor-migration/backup migrate-tool backup
    
  7. Upgrade database schema and migrate data:

    docker run -ti --rm -v /data/database:/var/lib/mysql migrate-tool up head
    
  8. Change to Deploy/ directory, configure Harbor by modifying the file harbor.cfg, you may need to refer to the configuration files you backed up during step 1. Refer to Installation & Configuration Guide for more info.

  9. If HTTPS has been enabled for Harbor before, restore the nginx.conf and key/certificate files from the backup files in Step 1. Refer to Configuring Harbor with HTTPS Access for more info.

  10. Run the ./prepare script to generate necessary config files.

  11. Rebuild Harbor and restart the registry service

    docker-compose up --build -d
    

Migration tool reference

  • Use help command to show instructions of the migration tool:

    docker run --rm migrate-tool help

  • Use test command to test mysql connection:

    docker run --rm -v /data/database:/var/lib/mysql migrate-tool test

  • Restore database from backup file in /path/to/backup

    docker run -ti --rm -v /data/database:/var/lib/mysql -v /path/to/backup:/harbor-migration/backup migrate-tool restore