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 hub上pull镜像。在下面的命令里,用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
转载于:https://blog.51cto.com/dangzhiqiang/1962874