ONES 升级说明
本文将引导您完成单机版 ONES 升级过程。
操作步骤
- 升级前准备
- 升级操作
- 升级后操作
1.升级准备
1.1 升级前准备
在开始升级之前,参考ONES 升级注意事项第1章 进行检查。
1.2 查看可升级版本
通过以下命令选择一个可用的版本号,或联系ONES工程师确认具体版本号。
# 列出所有可用版本
curl https://packages.ones.cn/release/ones-versions.yaml
1.3 准备在线服务器下 载升级包
- 如果运行 ONES 的服务器是离线的,需要找一台在线的服务器来制作差量包。然后将差量包拷贝到离线服务器上进行升级。
- 如果运行 ONES 的服务器是在线的,可以直接在运行 ONES 的服务器上进行升级。也可以提前准备一台在线服务器来制作差量包。然后将差量包拷贝到运行 ONES 的服务器上进行升级。
制作差量包
假定你当前的版本号是 v3.14.32 选择一个大于你当前ONES 版本的版本号 。比如: v3.15.25
#root账号登录服务器
sudo su -
#创建临时目录
mkdir -p /data/upgrade/
#下载升级包
curl https://packages.ones.cn/release/v3.15.25/build_offline_pkg_linux_amd64.sh | sudo SRC_ONES_VERSION=v3.14.32 IMAGE_REGISTRY_PORT=5001 bash -
等待10-20分钟(取决于网络带宽),直到看到以下输出,表示下载成功。

1.4 获取当前ONES数据目录
执行如下命令查找当前ONES数据目录,在下一步使用
kubectl -n ones-installer describe deploy installer-api | grep Path:
示例输出
Path: /data/ones/ones-installer-pkg/pkg
Path: /data/ones/ones-installer-pkg/config
Path: /data/ones/ones-installer-pkg/backups
如果输出结果有 /data/ones/ones-installer-pkg,则 ONES_DATA_DIR=/data/ones
如果输出结果有 /home/ones/ones-installer-pkg,则 ONES_DATA_DIR=/home/ones
2 升级操作
2.1 备份配置文件
升级前,请先执行备份文件的配置。
#进入容器后,根据版本选择如下1种备份方式即可
ones-ai-k8s.sh
#新版本采用命令备份
make backup-config
#老版本如果上述命令执行报错,请手工备份
filename=`date +"%Y%m%d-%H%M%S-$(date +%s.%6N)"`
mkdir -p config/backups/time-$filename
cp config/*.yaml config/backups/time-$filename/
#退出容器
exit
2.2 备份业务数据
升级前,执行数据备份任务;如果是外置数据库,请联系客户自行备份。
ones-ai-k8s.sh
# 手动全量备 份
make mysql-base-backup NAMESPACE=ones
# 查看日志
make logs-mysql-xbackup NAMESPACE=ones
上述备份操作不影响业务,可提前完成;下述操作将影响配置和服务,请在变更窗口内执行!
2.3 导入新镜像
执行如下命令导入新版本的镜像。注意:该操作会更新public.yaml中的版本号,执行该命令后请勿执行与升级无关的make操作。
cd /data/upgrade/
# ONES_DATA_DIR 请根据上一步查询到到环境实际路径替换!!!
OFFLINE_PKG=offline_pkg_v3.14.29_from_v3.14.28.tar ONES_DATA_DIR=/data/ones bash install_linux_amd64.sh
2.4 初始化新配置
ones-ai-k8s.sh
make setup-ones-cluster-operator
make setup-tidb-operator
make init-config
make init-db
2.5 执行数据迁移
请根据命令输出的日志继续完成升级动作
make start-migration MIGRATION_DIR=config/migration
2.5.1 有迁移时,屏幕上应该打印如下输出:
1. Get the migration pod:
$ kubectl -n ones-system get pod -l job-name=upgrade-ones-{升级前版本后}-{升级后版本号}-mysql
2. View pod log, observe the migration progress and status:
$ make tail-migration MIGRATION_DIR=config/migration
If the migration is nearing completion, you will see logs similar to the following:
[xxxx/xxx/xxx xx:xx:xx] [info] cutover preflight round x took xx.xxs, migration is nearing completion and manual confirmation can be done anytime now.
Than you can confirm the migration, the database and services will be upgraded to the new version within a few minutes.
3. Confirm the migration:
$ make confirm-migration MIGRATION_DIR=config/migration
查看迁移进度
make tail-migration MIGRATION_DIR=config/migration
当屏幕上打印类似如下输出时,表示迁移执行完成
[xxxx/xxx/xxx xx:xx:xx] [info] cutover preflight round x took xx.xxs, migration is nearing completion and manual confirmation can be done anytime now.
上一步确认迁移完成后,执行最终确认操作
此命令会将新版本资源应用到集群中,不可逆
make confirm-migration MIGRATION_DIR=config/migration
看到类似的输出代表升级成功
2023-09-07 04:08:37,917 [INFOJ The system has been surccessfully upgraded to version v3.15.9 from v3.14.32
2.5.2 没有迁移时,屏幕上应该打印如下输出:
2024-08-28 02:40:12,231 [INFO] ugrade ones version from v6.1.39 to v6.1.43
2024-08-28 02:40:12,264 [INFO] There is no need for migration.
2024-08-28 02:40:12,264 [INFO] Skip migration. Now you can continue to upgrade via 'make setup-ones'
没有迁移直接执行如 下命令应用新版本资源即可
make setup-ones
2.6 安装/更新内置插件
仅在 v6.18.1 及以上版本支持,安装/更新6个标品插件,根据授权决定是否启用。
make setup-ones-inner-plugins
3 升级后操作
参考ONES 升级注意事项第2章。
上述操作执行完成之后系统会升级到新版本,可以访问 ONES 查看业务是否正常!