# 常见问题汇总 ## 如何指定使用组件的版本? 您可在部署配置文件中使用版本声明。例如,如果您使用的是 OceanBase-CE 3.1.0 版本,可以指定以下配置: ```yaml oceanbase-ce: version: 3.1.3 ``` ## 如何指定使用特定版本的组件? 您可在部署配置文件中使用 `package_hash` 或 `tag` 声明。 如果您给自己编译的 OceanBase-CE 设置了 `tag`,您可以使用 `tag` 来指定。如: ```yaml oceanbase-ce: tag: my-oceanbase ``` 您也可以通过 `package_hash` 来指定特定的版本。当您使用 obd mirror 相关命令时会打印出组件的 `md5` 值,这个值即为 `package_hash`。 ```yaml oceanbase-ce: package_hash: 589c4f8ed2662835148a95d5c1b46a07e36c2d346804791364a757aef4f7b60d ``` ## 我修改了 OceanBase-CE 的代码,需要修改启动流程怎么办? 您可修改 `~/.obd/plugins/oceanbase-ce/` 下的启动相关插件。比如您为 3.1.0 版本的 OceanBase-CE 添加了一个新的启动配置,可以修改 `~/.obd/plugins/oceanbase-ce/3.1.0/start.py`。 ## 如何在离线模式下更新 OBD 本地镜像? 当您安装 OBD 的机器不能连接公网,却需要更新 OBD 或其他组件时,您可按以下步骤进行操作: 1. 在一台可以连通公网的机器下载好您需要的 RPM 包。 2. 将 RPM 包拷贝到安装有 OBD 的机器中。 3. 通过 `obd mirror clone` 命令将新的 RPM 包加到 local mirror 中。 此处以更新本地仓库中的 OBD 镜像为例: ```shell # 先在一台可以连通公网的机器上下载 OBD 最新的 RPM 包 # 最新的 RPM 包链接可以在对应的组件的 git 仓库中的 release note 或 OceanBase 开源官网(https://open.oceanbase.com/softwareCenter/community)中获得 wget https://github.com/oceanbase/obdeploy/releases/download/vx.x.x/ob-deploy-x.x.x-xxx.rpm # 将下载好的 RPM 包拷贝到安装有 OBD 的机器(obd_server)上 sh ob-deploy-x.x.x-xxx.rpm obd_server:~ # 将下载好的镜像加入到 local 中 obd mirror clone ob-deploy-x.x.x-xxx.rpm # 关闭远程镜像源 obd mirror disable remote ``` ## 如何升级 OBD? 升级 OBD 有以下两种方式,您可根据您的实际情况进行选择: * 如果您的机器可以连通公网或者您配置的 mirror 中有用于更新的 OBD 的 RPM 包,您可直接使用 `obd update` 命令升级 OBD。当您升级完成后可以使用命令 `obd --version` 查看版本,确认是否升级成功。 * 如果您的机器不能连通公网且您配置的 mirror 中没有用于更新的 OBD 的 RPM 包,请先通过 `obd mirror clone` 命令将用于更新的 OBD 的 RPM 包添加到 local mirror 中,之后再使用 `obd update` 命令升级 OBD。 下面展示在离线模式下,如何在 CentOS7 系统中将 OBD 升级到最新版本: ```shell # 先在一台可以连通公网的机器上下载 OBD 最新的 RPM 包 # 最新的 RPM 包链接可以在 git 仓库中的 release note 或 OceanBase 开源官网(https://open.oceanbase.com/softwareCenter/community)中获得 wget https://github.com/oceanbase/obdeploy/releases/download/vx.x.x/ob-deploy-x.x.x-xxx.rpm # 将下载好的 RPM 包拷贝到安装有 OBD 的机器(obd_server)中 sh ob-deploy-x.x.x-xxx.rpm obd_server:~ # 在 OBD 机器上执行以下命令完成升级 # 1.将下载好的镜像加入到 local 中 obd mirror clone ob-deploy-x.x.x-xxx.rpm # 2.关闭远程镜像源 obd mirror disable remote # 3.升级 obd update ``` ## 如何使用 OBD 升级 OceanBase 数据库? 使用 OBD 升级 OceanBase 数据库有以下两种方式,您可根据您的实际情况进行选择: * 如果您的机器可以连通公网或者您配置的 mirror 中有用于更新的 OceanBase 数据库的 RPM 包,您可直接使用 `obd cluster upgrade` 命令升级 OceanBase 数据库。 * 如果您的机器不能连通公网且您配置的 mirror 中没有用于更新的 OceanBase 数据库的 RPM 包,请先通过 `obd mirror clone` 将用于更新的 OceanBase 数据库的 RPM 包添加到 local mirror 中,之后再使用 `obd cluster upgrade` 命令升级 OceanBase 数据库。 下面展示在离线模式下,如何在 CentOS7 系统中使用 OBD 将 OceanBase-CE V3.1.1 升级到 V3.1.2: ```shell # 请先确认您的 OBD 版本,如果版本低于 V1.2.1,请先更新 OBD 的版本 # 在一台可以连通公网的机器上下载 OceanBase-CE RPM 包 # 最新的 RPM 包链接可以在 git 仓库中的 release note 或 OceanBase 开源官网(https://open.oceanbase.com/softwareCenter/community)中获得 wget https://github.com/oceanbase/oceanbase/releases/download/v3.1.2_CE/oceanbase-ce-3.1.2-10000392021123010.el7.x86_64.rpm # 将下载好的 RPM 包拷贝到安装 OBD 的机器(obd_server)中 sh oceanbase-ce-3.1.2-10000392021123010.el7.x86_64.rpm obd_server:~ # 在 OBD 机器上执行以下命令完成升级 # 1.将下载好的镜像加入到 local 中 obd mirror clone oceanbase-ce-3.1.2-10000392021123010.el7.x86_64.rpm # 2.关闭远程镜像源 obd mirror disable remote # 3.升级 obd cluster upgrade -c oceanbase-ce -V 3.1.2 ``` ### 报错处理 您可能会遇到 `Too many match` 的报错,这时只需在 `Candidates` 上选择一个 `hash` 即可。比如: ```shell obd cluster upgrade -c oceanbase-ce -V 3.1.2 --usable 7fafba0fac1e90cbd1b5b7ae5fa129b64dc63aed ``` ## 如何升级 obproxy 到 obproxy-ce 3.2.3? 由于开源 obproxy 组件在 V3.2.3 之后正式更名为 obproxy-ce,所以您需在 OBD 的执行用户下 [执行脚本](2.how-to-upgrade-obproxy-to-obproxy-ce-3.2.3.md) 修改 meta 信息。而后使用以下命令进行升级。 ```shell obd cluster upgrade -c obproxy-ce -V 3.2.3 ``` OBD 从 V1.3.0 开始仅支持使用 obproxy-ce 的组件名部署 V3.2.3 及之后版本的 ODP。但若您是使用 `obd update` 命令将 OBD 从低版本升级到 V1.3.0 及以上版本,仍支持使用 obproxy 组件名安装 V3.2.3 之前版本的 ODP(即:OBD 从 V1.3.0 开始不再提供 obproxy 插件库,但如果本地插件库中存在 obproxy 的插件库,则会被保留)。

说明

  • 如果 OBD 升级后发现旧插件无法使用,可直接通过 RPM 包安装旧版本 OBD 进行覆盖。

  • 如果您安装的是新版本 OBD,但想使用 obproxy,也可安装 V1.3.0 之前版本的 OBD,在完成 obproxy 的部署后执行 obd update 命令升级 OBD,或安装新版本的 OBD 进行覆盖。

## 使用 OBD 升级 ODP 出现异常如何解决? 若您在升级 ODP 过程中出现如下问题: ```bash Stop obproxy ok Start obproxy ok obproxy program health check ok Connect to obproxy x ``` 即 OBD 机器无法连接 ODP,可能原因有以下两种: 1. proxysys 禁用了非 127.0.0.1 的 IP 访问,导致 OBD 所在的机器不能建连,这种情况下请先执行如下命令连接到 proxysys: ```bash obclient -h -uroot@proxysys -P -p ```

说明

若您在连接 proxysys 时,使用自己设置的 proxysys 密码无法连接,请尝试将密码设置为空或者 proxysys 进行连接。

之后执行 `alter proxyconfig set skip_proxy_sys_private_check = true` 命令。 2. proxysys 的密码与 OBD 中存储的不一致,这种情况下请先执行上述命令连接到 proxysys ,之后执行命令 `alter proxyconfig set obproxy_sys_password = ` 修改 proxysys 密码。 您可将其密码修改为空(即 `obproxy_sys_password = ''`),或使其与 OBD 配置文件中存储的密码一致。 若排查后发现不是由上述两条原因引起的异常,您可到官网 [问答区](https://open.oceanbase.com/answer) 进行提问,会有专业人员为您解答。 ## OBD 升级后无法启动 ODP 服务如何解决? OBD 升级后会初始化 ODP 的密码,若您设置了 `obproxy_sys_password`,则需执行如下命令连接到 proxysys: ```bash obclient -h -uroot@proxysys -P -p ```

说明

若您连接 proxysys 时,使用自己设置的 proxysys 命令无法连接,请尝试使用空密码或者 proxysys 进行连接。

之后使用命令 `alter proxyconfig set obproxy_sys_password = ''` 将 proxysys 的密码设置为空,或者使其与配置文件中 `obproxy_sys_password` 的密码保持一致。 ## 部署 OCP Express 前如何配置 Java 环境? 您可登录到需部署 OCP Express 的机器,根据该机器的联网情况,参考如下方式为 OCP Express 安装 Java 环境。 ### 在线安装 在 CentOS 或 RedHat 系统上,执行如下命令安装: ```bash sudo yum install java-1.8.0-openjdk ``` 在 Ubuntu 或 Debian 系统上,执行如下命令安装: ```bash sudo apt-get update sudo apt-get install openjdk-8-jre ``` ### 离线安装 1. 单击部署所需安装包 [x86_64 架构](https://github.com/dragonwell-project/dragonwell8/releases/download/dragonwell-extended-8.14.15_jdk8u362-ga/Alibaba_Dragonwell_Extended_8.14.15_x64_linux.tar.gz),[arm 架构](https://github.com/alibaba/dragonwell8/releases/download/dragonwell-extended-8.14.15_jdk8u362-ga/Alibaba_Dragonwell_Extended_8.14.15_aarch64_linux.tar.gz)。 2. 将下载的安装包上传至对应机器,并在安装包所在目录下执行如下命令解压安装。 ```bash # 解压资源包 tar -zxvf Alibaba_Dragonwell_Extended_8*.tar.gz # 进入解压后的目录 cd dragonwell* # 创建软连 ln -s `pwd`/bin/java /usr/bin/java ```