1.faq.md 8.3 KB
Newer Older
F
v1.6.0  
frf12 已提交
1
# 常见问题汇总
F
v1.4.0  
frf12 已提交
2 3 4 5 6 7 8

## 如何指定使用组件的版本?

您可在部署配置文件中使用版本声明。例如,如果您使用的是 OceanBase-CE 3.1.0 版本,可以指定以下配置:

```yaml
oceanbase-ce:
F
v1.6.0  
frf12 已提交
9
  version: 3.1.3
F
v1.4.0  
frf12 已提交
10 11 12 13 14 15 16 17
```

## 如何指定使用特定版本的组件?

您可在部署配置文件中使用 `package_hash``tag` 声明。 如果您给自己编译的 OceanBase-CE 设置了 `tag`,您可以使用 `tag` 来指定。如:

```yaml
oceanbase-ce:
F
v1.6.0  
frf12 已提交
18
  tag: my-oceanbase
F
v1.4.0  
frf12 已提交
19 20 21 22 23 24
```

您也可以通过 `package_hash` 来指定特定的版本。当您使用 obd mirror 相关命令时会打印出组件的 `md5` 值,这个值即为 `package_hash`

```yaml
oceanbase-ce:
F
v1.6.0  
frf12 已提交
25
  package_hash: 589c4f8ed2662835148a95d5c1b46a07e36c2d346804791364a757aef4f7b60d
F
v1.4.0  
frf12 已提交
26 27
```

F
v1.6.0  
frf12 已提交
28
## 我修改了 OceanBase-CE 的代码,需要修改启动流程怎么办?
F
v1.4.0  
frf12 已提交
29 30 31

您可修改 `~/.obd/plugins/oceanbase-ce/` 下的启动相关插件。比如您为 3.1.0 版本的 OceanBase-CE 添加了一个新的启动配置,可以修改 `~/.obd/plugins/oceanbase-ce/3.1.0/start.py`

F
v1.6.0  
frf12 已提交
32
## 如何在离线模式下更新 OBD 本地镜像?
F
v1.4.0  
frf12 已提交
33 34 35

当您安装 OBD 的机器不能连接公网,却需要更新 OBD 或其他组件时,您可按以下步骤进行操作:

F
v1.6.0  
frf12 已提交
36
1. 在一台可以连通公网的机器下载好您需要的 RPM 包。
F
v1.4.0  
frf12 已提交
37 38 39 40 41 42 43 44

2. 将 RPM 包拷贝到安装有 OBD 的机器中。

3. 通过 `obd mirror clone` 命令将新的 RPM 包加到 local mirror 中。

此处以更新本地仓库中的 OBD 镜像为例:

```shell
F
v1.6.0  
frf12 已提交
45
# 先在一台可以连通公网的机器上下载 OBD 最新的 RPM 包
F
v1.4.0  
frf12 已提交
46
# 最新的 RPM 包链接可以在对应的组件的 git 仓库中的 release note 或 OceanBase 开源官网(https://open.oceanbase.com/softwareCenter/community)中获得
F
v1.6.0  
frf12 已提交
47
wget https://github.com/oceanbase/obdeploy/releases/download/vx.x.x/ob-deploy-x.x.x-xxx.rpm
F
v1.4.0  
frf12 已提交
48
# 将下载好的 RPM 包拷贝到安装有 OBD 的机器(obd_server)上
F
v1.6.0  
frf12 已提交
49
sh ob-deploy-x.x.x-xxx.rpm obd_server:~
F
v1.4.0  
frf12 已提交
50
# 将下载好的镜像加入到 local 中
F
v1.6.0  
frf12 已提交
51
obd mirror clone ob-deploy-x.x.x-xxx.rpm
F
v1.4.0  
frf12 已提交
52 53 54 55 56 57 58 59 60 61 62 63
# 关闭远程镜像源
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。

F
v1.6.0  
frf12 已提交
64
下面展示在离线模式下,如何在 CentOS7 系统中将 OBD 升级到最新版本:
F
v1.4.0  
frf12 已提交
65 66

```shell
F
v1.6.0  
frf12 已提交
67
# 先在一台可以连通公网的机器上下载 OBD 最新的 RPM 包
F
v1.4.0  
frf12 已提交
68
# 最新的 RPM 包链接可以在 git 仓库中的 release note 或 OceanBase 开源官网(https://open.oceanbase.com/softwareCenter/community)中获得
F
v1.6.0  
frf12 已提交
69
wget https://github.com/oceanbase/obdeploy/releases/download/vx.x.x/ob-deploy-x.x.x-xxx.rpm
F
v1.4.0  
frf12 已提交
70
# 将下载好的 RPM 包拷贝到安装有 OBD 的机器(obd_server)中
F
v1.6.0  
frf12 已提交
71
sh ob-deploy-x.x.x-xxx.rpm obd_server:~
F
v1.4.0  
frf12 已提交
72 73
# 在 OBD 机器上执行以下命令完成升级
# 1.将下载好的镜像加入到 local 中
F
v1.6.0  
frf12 已提交
74
obd mirror clone ob-deploy-x.x.x-xxx.rpm
F
v1.4.0  
frf12 已提交
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
# 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 <deploy name> -c oceanbase-ce -V 3.1.2
```

### 报错处理

您可能会遇到 `Too many match` 的报错,这时只需在 `Candidates` 上选择一个 `hash` 即可。比如:

```shell
obd cluster upgrade <deploy name> -c oceanbase-ce -V 3.1.2 --usable 7fafba0fac1e90cbd1b5b7ae5fa129b64dc63aed
```
F
v1.6.0  
frf12 已提交
114 115 116

## 如何升级 obproxy 到 obproxy-ce 3.2.3?

R
Rongfeng Fu 已提交
117
由于开源 OBProxy 组件在 V3.2.3 之后正式更名为 obproxy-ce,所以您需在 OBD 的执行用户下 [执行脚本](2.how-to-upgrade-obproxy-to-obproxy-ce-3.2.3.md) 修改 meta 信息。而后使用以下命令进行升级。
F
v1.6.0  
frf12 已提交
118 119 120 121 122

```shell
obd cluster upgrade <deploy name> -c obproxy-ce -V 3.2.3
```

R
Rongfeng Fu 已提交
123
OBD 从 V1.3.0 开始仅支持使用 obproxy-ce 的组件名部署 V3.2.3 及之后版本的 OBProxy。但若您是使用 `obd update` 命令将 OBD 从低版本升级到 V1.3.0 及以上版本,仍支持使用 obproxy 组件名安装 V3.2.3 之前版本的 OBProxy(即:OBD 从 V1.3.0 开始不再提供 obproxy 插件库,但如果本地插件库中存在 obproxy 的插件库,则会被保留)。
F
v1.6.0  
frf12 已提交
124

R
Rongfeng Fu 已提交
125 126 127 128 129
> **说明**
>
> * 如果 OBD 升级后发现旧插件无法使用,可直接通过 RPM 包安装旧版本 OBD 进行覆盖。
>
> * 如果您安装的是新版本 OBD,但想使用 obproxy,也可安装 V1.3.0 之前版本的 OBD,在完成 obproxy 的部署后执行 `obd update` 命令升级 OBD,或安装新版本的 OBD 进行覆盖。
F
v1.6.0  
frf12 已提交
130

R
Rongfeng Fu 已提交
131
## 使用 OBD 升级 OBProxy 出现异常如何解决?
F
v1.6.0  
frf12 已提交
132

R
Rongfeng Fu 已提交
133
若您在升级 OBProxy 过程中出现如下问题:
F
v1.6.0  
frf12 已提交
134 135 136 137 138 139 140 141

```bash
Stop obproxy ok
Start obproxy ok
obproxy program health check ok
Connect to obproxy x
```

R
Rongfeng Fu 已提交
142
即 OBD 机器无法连接 OBProxy,可能原因有以下两种:
F
v1.6.0  
frf12 已提交
143 144 145 146 147 148 149

1. proxysys 禁用了非 127.0.0.1 的 IP 访问,导致 OBD 所在的机器不能建连,这种情况下请先执行如下命令连接到 proxysys:

   ```bash
   obclient -h<obproxy_ip> -uroot@proxysys -P<obproxy_post> -p<obproxy_pwd>
   ```

R
Rongfeng Fu 已提交
150 151 152
   > **说明**
   >
   > 若您在连接 proxysys 时,使用自己设置的 proxysys 密码无法连接,请尝试将密码设置为空或者 `proxysys` 进行连接。
F
v1.6.0  
frf12 已提交
153 154 155 156 157 158 159 160 161

   之后执行 `alter proxyconfig set skip_proxy_sys_private_check = true` 命令。

2. proxysys 的密码与 OBD 中存储的不一致,这种情况下请先执行上述命令连接到 proxysys ,之后执行命令 `alter proxyconfig set obproxy_sys_password = <obproxy_pwd>` 修改 proxysys 密码。

   您可将其密码修改为空(即 `obproxy_sys_password = ''`),或使其与 OBD 配置文件中存储的密码一致。

若排查后发现不是由上述两条原因引起的异常,您可到官网 [问答区](https://open.oceanbase.com/answer) 进行提问,会有专业人员为您解答。

R
Rongfeng Fu 已提交
162
## OBD 升级后无法启动 OBProxy 服务如何解决?
F
v1.6.0  
frf12 已提交
163

R
Rongfeng Fu 已提交
164
OBD 升级后会初始化 OBProxy 的密码,若您设置了 `obproxy_sys_password`,则需执行如下命令连接到 proxysys:
F
v1.6.0  
frf12 已提交
165 166 167 168 169

```bash
obclient -h<obproxy_ip> -uroot@proxysys -P<obproxy_post> -p<obproxy_pwd>
```

R
Rongfeng Fu 已提交
170 171 172
> **说明**
>
> 若您连接 proxysys 时,使用自己设置的 proxysys 命令无法连接,请尝试使用空密码或者 `proxysys` 进行连接。
F
v1.6.0  
frf12 已提交
173 174

之后使用命令 `alter proxyconfig set obproxy_sys_password = ''` 将 proxysys 的密码设置为空,或者使其与配置文件中 `obproxy_sys_password` 的密码保持一致。