Skip to main content
Version: v3&v6

ONES 在线/离线升级

1.升级准备

在开始升级之前,需要做一些如下准备工作,可提前操作

1.1 查看可升级版本

可以通过以下命令选择一个可用的版本号,或联系ONES工程师确认具体版本号

# 列出所有可用版本
curl https://packages.ones.cn/release/ones-versions.yaml

展示结果如下:

➜ curl https://packages.ones.cn/release/ones-versions.yaml
onesVersions:
- version: v3.14.100
releaseDate: "2020-01-23"
changeLog: ""
remark: ""
- version: v3.14.101
releaseDate: "2024-01-19"
changeLog: ""
remark: ""

1.2 准备在线服务器下载升级包

  • 如果运行 ONES 的服务器是离线的,需要找一台在线的服务器来制作差量包。然后将差量包拷贝到离线服务器上进行升级。
  • 如果运行 ONES 的服务器是在线的,可以直接在运行 ONES 的服务器上进行升级。也可以提前准备一台在线服务器来制作差量包。然后将差量包拷贝到运行 ONES 的服务器上进行升级。

制作差量包

假定你当前的版本号是 v3.14.32 选择一个大于你当前ONES 版本的版本号 。比如: v3.15.25

curl https://packages.ones.cn/release/v3.15.25/build_offline_pkg_linux_amd64.sh | sudo SRC_ONES_VERSION=v3.14.32  bash - 

1.3 监控配置检查

失败警告!!!

当选定的 ONES 升级版本号小于v6.1.94v6.15.0时,确保 fluentOverlay 的值为 only-ones-logging,相关命令:

进入操作机

ones-ai-k8s.sh

查看当前环境 fluentOverlay 的配置值

make get_value KEY=fluentOverlay

根据要求调整 fluentOverlay 的值

vi default/private.yaml # 如果 fluentOverlay 配置存在则修改该配置,如果不存在就新增一个 fluentOverlay=xxx 的配置

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 执行升级制品命令

首先请导入镜像,升级制品。注意:该操作会更新public.yaml中的版本镜像号,请在升级前操作

# 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.2 备份你的数据

升级前,执行数据备份任务;如果是外置数据库,请联系客户自行备份

ones-ai-k8s.sh

# 手动全量备份
make mysql-base-backup NAMESPACE=ones

# 查看日志
make logs-mysql-xbackup NAMESPACE=ones

具体说明请参考 备份与恢复

2.3 初始化新增的配置项

如下操作可能会影响业务,请在约定时间点操作

ones-ai-k8s.sh
make setup-ones-cluster-operator
make setup-tidb-operator
make init-config
make init-db

2.4 执行开始迁移命令

请根据命令输出的日志继续完成升级动作

make start-migration MIGRATION_DIR=config/migration

有迁移时,屏幕上应该打印如下输出:

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

没有迁移时,屏幕上应该打印如下输出:

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.5 安装/更新内置插件

仅在 v6.18.1 及以上版本支持,安装/更新6个标品插件,根据授权决定是否启用。

make setup-ones-inner-plugins

3 升级后操作

参考ONES 升级注意事项第3章。

上述操作执行完成之后系统会升级到新版本,可以访问 ONES 查看业务是否正常!