OceanBase 4.0 all-in-one 版本如何离线升级 obd

今天遇到了一个问题,现象是这样的。

问题出现的原因:

在测试 ob 4.0 allinone 版本时,我用了自动部署的方式(autodeploy),发现部署完的集群无法启动,错误原因可以参考这里:https://ask.oceanbase.com/t/topic/35601792。

[admin@dbs06 conf]$ obd cluster start obcluster
Get local repositories ok
Search plugins ok
Open ssh connection ok
Load cluster param plugin ok
Check before start observer x
[ERROR] (172.16.10.128): when production_mode is True, memory_limit can not be less then 16.0G
[WARN] (172.16.10.128) clog and data use the same disk (/app)
[ERROR] (172.16.10.128) /app not enough disk space. (Avail: 6.5T, Need: 9.0T)

这个找人确认了一下是 obd 1.6.0 的一个问题,在 obd 1.6.1 版本上已经解决了。

如何解决:

正常来说,其实这个问题在 obd 1.6.1 中已经解决了,直接升级 obd 即可。

升级 obd 有两种,在线升级和离线升级。在线升级的方法比较简单,这里不详细展开了,可以直接执行命令: sudo obd update,它会自动联网升级

这里重点说一下离线升级,我这里因为没有外网条件,所以只能离线搞,但是找了一圈没有找到教程,索性我就直接下载了一个 rpm 包,安装完后做了一下文件替换。主要操作步骤如下:

  1. 从 ob 官网下载 obd 最新安装包
    OceanBase 4.0 all-in-one 版本如何离线升级 obd_第1张图片
  2. 上传到服务器上,直接 rpm 安装
sudo rpm -ivh  ob-deploy-1.6.1-4.el7.x86_64.rpm
  1. 把对应的文件复制一下,替换 allinone 安装包中的内容
    查了一下,单独的 obd 安装包会自动将 bin 安装到系统 /bin 目录下,将 usr 安装到 /usr/obd 下,所以我们直接把这两部分内容,替换掉 allinone 包下的内容,如下:
cd /home/admin/oceanbase-all-in-one/obd/usr
# 备份一下 usr 下的内容,避免失败了没法回退
cp /bin/obd bin/obd
rm -rf obd/*
cp -Rf /usr/obd/* obd/
  1. 重新执行一下 install.sh 脚本
cd /home/admin/oceanbase-all-in-one/bin
./install.sh

这样执行一遍基本就能完成升级了,可以重新自动部署集群继续使用。这种方法不确定是否存在风险,仅供大家参考。后面跟官方沟通获得更合适的离线更新方法再更新给大家~


增加一个官方提供的正常升级步骤:

首先还是把新的 obd rpm 包上传到服务器上;

然后采用 obd 命令添加到本地镜像仓库:

obd mirror clone ob-deploy-1.6.1-4.el7.x86_64.rpm

最后,直接执行 obd update 命令,obd 会自动升级到最新版本。

注意:当前官方提供的这种操作,只能在 root 用户的安装环境下进行,其他用户会存在权限问题;这个问题会在后续 obd 版本中修复,如果您看到这个帖子时 obd 版本已经 > 1.6.1 并且是非 root 用户更新 obd,可以尝试官方提供的升级步骤是否可用,如不可用可以参考我上面覆盖目录的办法;如果当前还是 1.6.0/1.6.1 版本的 obd 在非 root 用户下,那只能暂时使用我的方法进行操作。

End~

你可能感兴趣的:(OceanBase,oceanbase,服务器,linux)