Harbor升级和数据库迁移手册

 

当升级一个已经存在的Harbor实例到新版本时,需要迁移数据库数据。参考What's New in Harbor Database Schema查看数据库发生了哪些变化,如果有的话,就需要进行数据库迁移操作,因为迁移可能会改变数据库模式,所以在任何数据迁移操作之前,都一定要先备份数据库。

 

如果你是第一次安装habor,或者新安装的数据库的版本和之前的数据库版本一致,那么你不需要做任何数据库的迁移操作。

 

注意:

  • v1.2开始,你需要使用发布版本号做为迁移镜像的tag,新版本不再使用“latest”这个tag了。

  • 在任何数据操作之前,都必须要备份数据。

 

升级Harbor和迁移数据

 

1.      登到harbor所在的服务器上,如果harbor还在运行,就停止并删除对应的Harbor实例。

cd harbor

docker-compose down


2.     备份harbor当前的文件,确保在需要的时候可以回滚到当前的这个版本。

cd ..

mv harbor /my_backup_dir/harbor

 

3.      github上获取最新的harbor发布版安装包,下载地址:https://github.com/vmware/harbor/releases

 

4.      在更新harbor之前,先做数据库迁移操作。这个迁移工具以docker镜像的方式提供,所以你需要从docker hubpull镜像。在下面的命令里,用harbor的发布版本号来替换[tag]

docker pull vmware/harbor-db-migrator:[tag]

 

5.      备份数据库到一个目录,比如/path/to/backup。如果目录不存在的话,你需要自己创建,并且数据库的用户名和密码需要通过环境变量“DB_USR”“DB_PWD”来提供。

docker run -ti --rm -e DB_USR=root -e DB_PWD=xxxx -v/data/database:/var/lib/mysql -v /path/to/backup:/harbor-migration/backupvmware/harbor-db-migrator:[tag] backup


6.     更新数据库模式并迁移数据:

docker run -ti --rm -e DB_USR=root -e DB_PWD=xxxx -v/data/database:/var/lib/mysql vmware/harbor-db-migrator:[tag] up head


7.     解压新的harbor安装包,并切换到工作目录./harbor中去。通过修改harbor.cfg来配置harbor

  • 通过修改harbor.cfg来配置harbor,你可能需要参考第二步操作时备份的配置文件。参考安装和配置手册获取更多的信息。由于新版本的harbor.cfg配置文件的格式和内容可能会发生改变,所以不能直接从之前的版本来复制harbor.cfg配置文件。

 

重要:如果你更新harbor之前使用的认证方式为LDAP/AD,那边在你加载启动新版本的harbor之前,必须要确保harbor.cfg中的auth_mode配置成ldap_auth,否则,更新之后用户将无法登陆。

 

  • 为了帮助将harbor.cfg配置文件从v0.5.0版本迁移到v1.1.x版本,提供了一个脚本,描述如下。对于其他版本的配置文件,需要手动迁移harbor.cfg文件。

cd harbor

./upgrade --source-loc source_harbor_cfg_loc--source-version 0.5.0 --target-loc target_harbor_cfg_loc --target-version1.1.x

 

注意:在执行这个脚本之后,要重新检查一遍,确保harbor.cfg中的配置都是正确的。如果有需要的话,你可以修改harbor.cfg

 

8.     切换到./harbor目录,执行./install.sh脚本安装新版本harbor实例。如果你安装harbor选择其他组件,比如Notary或者Clair,可参考安装和配置手册获取更新信息。

 

升级后回滚

 

不管什么原因,如果你想回滚到之前的harbor版本,可以参考如下步骤:

 

1.     harbor服务。

cd harbor

docker-compose down

 

2.     从备份文件/path/to/backup中恢复数据库。

docker run -ti --rm -e DB_USR=root -e DB_PWD=xxxx -v/data/database:/var/lib/mysql -v /path/to/backup:/harbor-migration/backupvmware/harbor-db-migrator:[tag] restore

 

3.     删除当前的harbor实例。

rm -rf harbor

 

4.     恢复老版本的harbor文件。

mv /my_backup_dir/harbor harbor

 

5.     使用之前的配置重启harbor服务。

如果之前版本是通过发布的二进制包安装的:

cd harbor

./install.sh

 

注意:如果你安装harbor选择其他组件,比如Notary或者Clair,可参考安装和配置手册获取更新信息。

 

如果之前的harbor版本是通过源码安装的:

cd harbor

docker-compose up --build -d

 

迁移工具参考

 

  • 使用help命令显示迁移工具帮助信息:

docker run --rm -e DB_USR=root -e DB_PWD=xxxxvmware/harbor-db-migrator:[tag] help

 

  • 使用test命令测试mysql连接:

docker run --rm -e DB_USR=root -e DB_PWD=xxxx -v/data/database:/var/lib/mysql vmware/harbor-db-migrator:[tag] test

 

原文:https://github.com/vmware/harbor/blob/master/docs/migration_guide.md