【 使用环境 】生产环境 or 测试环境
测试环境
【 OB or 其他组件 】
ob_server
【 使用版本 】
4.2.1.10
【问题描述】清晰明确描述问题
官方文档中提到,通过 obd 升级 ob_server,可以使用以下命令:
obd cluster upgrade obtest -c oceanbase-ce -V 4.2.0.0 --usable=bf178e82c99ca1324a3df9e1a21cbbb8f8c4d46c
这条命令看上去是一次性升级所有节点。我希望能逐个节点的手动升级,请问 obd 支持吗?单台升级的命令是什么?
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
论坛小助手
#3
根据文档库中的信息,obd cluster upgrade
命令确实支持对整个集群进行升级,但并不直接提供逐个节点手动升级的选项。不过,您可以采取以下步骤实现单个 ob_server
的手动升级:
方法概述
-
停止目标节点:使用
obd cluster stop
停止需要升级的单个节点。
-
升级目标节点:通过手动替换目标节点的二进制文件或重新部署该节点来完成升级。
-
启动目标节点:使用
obd cluster start
启动已升级的节点。
-
验证升级结果:确保升级后的节点正常工作。
以下是具体操作步骤:
1. 停止单个节点
假设您的集群名为 obtest
,需要升级的节点为 node1
,可以使用以下命令停止单个节点:
obd cluster stop obtest -n node1
2. 替换目标节点的二进制文件
注意:请确保替换路径与实际安装路径一致,并备份旧版本的二进制文件以防止意外情况。
3. 启动已升级的节点
使用以下命令启动已升级的节点:
obd cluster start obtest -n node1
4. 验证升级结果
登录到目标节点的 sys
租户,执行以下 SQL 查询确认版本是否正确:
SELECT OB_VERSION();
如果返回的结果为 4.2.1.10
,则说明升级成功。
注意事项
-
数据一致性:在生产环境中,建议先测试升级流程以确保不会影响数据一致性。
-
集群健康检查:升级完成后,使用
obd cluster status
检查整个集群的状态,确保所有节点正常运行。
-
滚动升级限制:虽然上述方法可以实现单节点升级,但在某些场景下可能需要对整个集群进行滚动升级以避免潜在问题。
总结
目前 obd
并未直接提供逐个节点升级的命令,但可以通过停止、替换二进制文件和启动的方式手动完成单个 ob_server
的升级。如果您希望简化此过程,可以考虑提交功能需求至 OceanBase 社区,以便未来版本中支持更灵活的升级方式。
检索到的文档如下:
- 升级 OceanBase 数据库
- 使用 obd 进行运维
- 常见问题汇总
- OceanBase 数据库社区版 V3.1.2
- 使用 OBD 升级 OceanBase 数据库
- 集群升级
- OB_VERSION
1 个赞
是的。但是我没装 ocp,所以希望能够手动逐台滚动升级
辞霜
#7
官方文档中并未有单独节点升级的命令。这边可以反馈一下看看后续是否可以化个需求
辞霜
#8
你好 这边咨询了下obd同学。
obd 升级时候判断 如果够3个节点 会自动滚动升级的
假设我有三节点的一个集群,包括 observer1、observer2 和 observer3。
现在我计划先升级 observer1:我可以把 all-in-one 里面的 oceanbase-ce-4.2.5.rpm 上传到 observer1,停止 observer1 原来的 4.2.1 进程,通过 mv 移走原来的安装目录,然后通过 rpm 安装上传的 4.2.5 的 rpm 包,然后在新的安装目录下启动进程吗?
不知道 rpm 安装的方式,会不会改写全局性的东西,还是说只是解压缩放到安装目录下?
通过 obd 升级,如果升级失败,会自动回滚到原来的版本吗?
官方文档里关于升级方面的资料太少了,这样根本无法放心的进行升级。
辞霜
#12
不会回滚,如升级超时可以再次执行升级任务,集群会继续升级。
mv 移走原来的安装目录,然后通过 rpm 安装上传的 4.2.5 的 rpm 包,然后在新的安装目录下启动进程吗?
这种方法不可取