# 错误码 本文总结了使用 OBD 过程中可能会遇到的相关报错,主要包括以下几个方面。 ## 通用报错 ### OBD-1000:Configuration conflict x.x.x.x: xxx port is used for x.x.x.x 错误原因:配置文件中存在端口冲突。 解决方法:您可使用 obd cluster edit-config 命令打开配置文件,查看端口配置并进行修改。 ### OBD-1001:x.x.x.x:xxx port is already used 错误原因:端口已经被占用。 解决方法:请您检查配置并更换端口,您可根据自身情况选择以下任一方式。 - 方法一:若您使用配置文件部署,使用 `obd cluster edit-config` 命令修改配置文件中对应的端口配置。修改完成后继续执行 `obd cluster start` 命令部署即可。

说明

方法一中提到的命令详细介绍可参考 集群命令组

- 方法二:若您使用 `obd demo` 命令部署,可通过如下命令指定端口,此处以指定 oceanbase-ce 组件的 mysql_port 为例。 ```shell obd demo --oceanbase-ce.mysql_port=3881 ```

说明

方法二中提到的命令详细介绍可参考 快速部署命令

- 方法三:若您通过 OBD 白屏界面部署,可在 **集群配置** 界面修改对应的端口。 ### OBD-1002:Fail to init x.x.x.x path 错误原因: 1. 配置文件中的 user 用户(未填的情况下默认为当前用户)没有对应目录的写权限。 2. home_path 不为空 您可根据报错的具体信息进行判断。 解决方法: 对于情况 1,您可通过以下两种方式解决。 - 运行命令添加或修改 user 信息。 ```shell obd cluster edit-config ``` - 登陆到目标机器,为当前账号赋予对应目录的写权限。 对于情况 2,您也可通过以下两种方式解决。 - 选择其他目录。 - 若您确认该目录可以被清空,也可使用 `-f` 选项,OBD 将会使用当前用户去清空该目录。 ### OBD-1003:fail to clean x.x.x.x:xxx 错误原因:检查配置文件中的 user 用户(未填的情况下默认为当前用户)是否有 home_path 的写权限。 解决方法:您可通过以下两种方式解决。 - 运行命令添加或修改 user 信息。 ```shell obd cluster edit-config ``` - 登陆到目标机器,为当前账号赋予对应目录的写权限。 ### OBD-1004:Configuration conflict x.x.x.x: xxx is used for x.x.x.x 错误原因:配置文件中存在路径冲突。 解决方法:请您检查配置并进行修改。 ### OBD-1005:Some of the servers in the cluster have been stopped 错误原因:后续的操作需要所有的机器的服务全部在线,而当前配置内的部分机器已经停止。 解决方法:您可使用 `obd cluster start --wop` 无参启动,将全部的服务拉起。 ### OBD-1006:Failed to connect to xxx 错误原因: 1. OBD 和目标机器之间网络不连通。 2. 对应的组件进程已经退出或者不提供服务。 3. 账号密码不匹配。 解决办法: 对于情况 1,请自行修复网络。 对于情况 2,可尝试再次启动组件,如果依旧启动失败,请参考启动失败的错误进行排查,如 **OBD-2002**。 对于情况 3,常见原因是用户直接执行 SQL 命令修改了密码,账号密码与配置文件中存储的不同导致 OBD 连接不到组件。该种情况下有以下两种解决办法。 1. 执行 SQL 命令将密码改回与 OBD 储存的密码一致。 2. 执行 `vi ~/.obd/cluster//config.yaml` 修改对应的密码使其与组件中实际密码一致。 ### OBD-1007:(x.x.x.x) xxx must not be less than xxx (Current value: xxx) 错误原因:ulimits 配置不满足要求。 解决办法:可通过修改 `/etc/security/limits.d/` 目录下对应文件和 `/etc/security/limits.conf` 使其满足要求。 ### OBD-1008:(x.x.x.x) failed to get fs.aio-max-nr and fs.aio-nr 错误原因:OBD 获取不到服务器上 aio 配置。 解决办法:请检查当前用户是否有权限查看 fs.aio-max-nr/fs.aio-nr。 ```bash cat /proc/sys/fs/aio-max-nr /proc/sys/fs/aio-nr ``` ### OBD-1009:x.x.x.x xxx need config: xxx 错误原因:服务相关组件缺少对应配置。 解决办法:执行如下命令打开配置文件,并在配置文件中添加所提示的配置项,修改后根据输出执行对应重启命令。 ```bash obd cluster edit-config ``` ### OBD-1010:x.x.x.x No such net interface: xxx 错误原因: 1. 黑屏端获取不到 devname。 2. 白屏端获取不到 devname。 解决办法: 对于情况 1,执行如下命令打开配置文件,在配置文件中添加或修改 devname,修改后根据输出执行对应重启命令。 ```bash obd cluster edit-config ``` 对于情况 2,可在白屏界面 **集群配置** -> **更多配置** 中设置 devname。 ### OBD-1011:(x.x.x.x) Insufficient AIO remaining (Avail: xxx, Need: xxx), The recommended value of fs.aio-max-nr is 1048576 错误原因:系统可用 aio 数量少于数据库需要的 aio 数量。 解决办法:执行如下命令修改 linux aio-max-nr。 ```bash echo 1048576 > /proc/sys/fs/aio-max-nr ``` ### OBD-1012:xxx 错误原因: 1. 类型转换异常,如 int 型参数传入字符串。 2. 参数值超限,如 `rpc_port` 的取值区间是 1025~65535,则 `rpc_port` 配置的值不在该区间就会报错。 3. 参数缺失,如关键参数如 `home_path` 未配置。 解决办法: 对于情况 1,请您检查参数类型并修改。 对于情况 2,请您检查传参值并修改。 对于情况 3,请您检查传参配置,若存在参数缺失需配置对应参数。 ### OBD-1013:xxx@x.x.x.x connect failed: xxx 错误原因:出现该报错的原因有很多,常见的原因有以下两种。 1. 用户名或密码错误。 2. 连接超时。 解决办法: 对于情况 1,执行如下命令打开配置文件,在配置文件中添加或修改用户名和密码,修改后根据输出执行对应重启命令。 ```bash obd cluster edit-config ``` 对于情况 2,检查服务器相应配置,如端口是否准确,防火墙是否开启。 若排查后发现并非以上两种原因导致,您可到官网 [问答区](https://ask.oceanbase.com/) 进行提问,会有专业人员为您解答。 ## OceanBase 部署相关报错 ### OBD-2000:x.x.x.x not enough memory 错误原因:内存不足。 解决方法:OBD 的启动严格按照 MemAvailable 来计算内存。如果存在可以释放的 cached,您可以先使用以下命令尝试释放。 ```shell echo 3 > /proc/sys/vm/drop_caches ``` 如果内存仍然不足请通过 `edit-config` 调整 `memory_limt` 和 `system_memory`,通常情况下 `memory_limt/3 ≤ system_memory ≤ memory_limt/2`。

注意

memory_limt 不能低于 8G,即您的可用内存必须大于等于 8G。

### OBD-2001:server can not migrate in 错误原因:可用的 Unit 数小于 `--unit-num`。 解决方法:请您修改传入的 `--unit-num`。您可使用以下命令查看当前可用的 Unit 数。 ```sql select count(*) num from oceanbase.__all_server where status = 'active' and start_service_time > 0 ``` ### OBD-2002:failed to start x.x.x.x observer 错误原因:出现该报错的原因有很多,常见的原因有以下两种。 - `memory_limit` 小于 8G。 - `system_memory` 太大或太小。通常情况下 `memory_limt/3 ≤ system_memory ≤ memory_limt/2`。 解决方法: - 若排查后发现该报错为上述两条原因造成,根据对应原因进行调整即可; - 若排查后发现不是由上述两条原因引起的报错,您可到官网 [问答区](https://ask.oceanbase.com/) 进行提问,会有专业人员为您解答。 ### OBD-2003:not enough disk space for clog. Use redo_dir to set other disk for clog, or reduce the value of datafile_size 错误原因:磁盘使用率高于使用率要求。 解决方法:请您对磁盘的存储进行调整。 - 若您采用的是自动部署方式,要求磁盘使用率不能高于 72%。 - 若您采用的是手动部署的方式,在不更改配置的情况下,要求磁盘使用率不能高于 64%。

注意

在 redo_dir 和 data_dir 同盘的情况下,计算磁盘使用率时会算上 datafile 将要占用的空间。

### OBD-2004:Invalid: xxx is not a single server configuration item 错误原因:修改的配置项是一个全局配置项,不能对某个 server 单独修改。 解决方法:您可将需修改的配置改放到 global 下。 ### OBD-2005:Failed to register cluster. xxx may have been registered in xxx 错误原因:注册集群失败,或者该集群已经被注册。 解决办法:有以下三种解决办法。 - 执行 `obd cluster edit-config` 命令打开配置文件,将正确的 Config Server 配置给配置项 `obconfig_url`。 - 若您确认 Config Server 正确并希望强制覆盖,可以在执行 `obd cluster start` 命令时加上 `-f` 参数覆盖已注册的集群。 - 若您确认 Config Server 正确,也可以执行 `obd cluster edit-config` 命令打开配置文件,修改配置项 `appname` 和 `cluster_id`,更换为其他集群名进行部署。 ### OBD-2006:x.x.x.x has more than one network interface. Please set `devname` for x.x.x.x 错误原因: 1. 黑屏端获取不到 devname。 2. 白屏端获取不到 devname。 解决办法: 对于情况 1,执行如下命令打开配置文件,在配置文件中添加或修改 devname,修改后根据输出执行对应重启命令。 ```bash obd cluster edit-config ``` 对于情况 2,可在白屏界面 **集群配置** -> **更多配置** 中设置 devname。 ### OBD-2007:x.x.x.x xxx fail to ping x.x.x.x. Please check configuration `devname` 错误原因:机器之间相互 ping 不通。 解决办法: 1. 检查网卡配置是否与实际匹配。 2. 检查各个节点网络是否畅通。 ### OBD-2008:Cluster clocks are out of sync 错误原因:集群之间时钟超时。 解决办法:同步各个服务器的时钟。 ### OBD-2009:x.x.x.x: when production_mode is True, xxx can not be less then xxx 错误原因:当生产模式开启时,`__min_full_resource_pool_mem`、`memory_limit` 等配置项不能小于固定值。 解决办法: - 部署非生产环境时,执行如下命令打开配置文件,修改配置项 `production_mode` 为 `False`,修改后根据输出执行对应重启命令。 ```bash obd cluster edit-config ``` - 部署生产环境时, 执行如下命令打开配置文件,修改配置项 `__min_full_resource_pool_mem`、`memory_limit`,使其大于固定值,修改后根据输出执行对应重启命令。 ```bash obd cluster edit-config ``` ### OBD-2010:x.x.x.x: system_memory too large. system_memory must be less than memory_limit/memory_limit_percentage 错误原因:配置项 `system_memory` 配置过大,该配置项值必须小于 `memory_limit`/`memory_limit_percentage` * `total_memory`。 解决办法: 1. 黑屏端:执行如下命令打开配置文件,修改配置项 `system_memory`,修改后根据输出执行对应重启命令。 ```bash obd cluster edit-config ``` 2. 白屏端:可在白屏界面 **集群配置** -> **更多配置** 中设置 `system_memory`。 ### OBD-2011:x.x.x.x: fail to get memory info.\nPlease configure 'memory_limit' manually in configuration file 错误原因:服务器获取不到内存信息。 解决办法: 1. 黑屏端:执行如下命令打开配置文件,配置 `memory_limit` 信息,修改后根据输出执行对应重启命令。 ```bash obd cluster edit-config ``` 2. 白屏端:可在白屏界面 **集群配置** -> **更多配置** 中设置 `memory_limit`。 ## 测试相关报错 ### OBD-3000:parse cmd failed 错误原因:mysqltest 初始化文件必须是以 `.sql` 结尾的 sql 文件。 解决方法:请您检查 `--init-sql-files` 的参数是否满足此要求。 ### OBD-3001:xxx.sql not found 错误原因:mysqltest 初始化时找不到对应的初始化文件。 解决方法:请您检查 `--init-sql-dir` 目录下是否包含 `--init-sql-files` 声明的文件。 ### OBD-3002:Failed to load data 错误原因:出现该报错的原因有很多,常见的原因有以下两种。 1. 租户资源不足或者压力过大。 2. 数据构建脚本报错。 解决方法: 对于情况 1,可使用资源规格更大的租户,或者调整 warehouses、load-workers 等参数值以减少构建压力。 对于情况 2,由于数据构建脚本是由 TPC 官网提供,可以先尝试重新执行脚本,如果问题仍然存在请到官网 [问答区](https://ask.oceanbase.com/) 提问,会有专业人员为您解答。 ### OBD-3003:Failed to run TPC-C benchmark 错误原因: 1. 测试进程卡死后因为超时被杀死。 2. TPC-C 测试命令返回报错。 解决方法: - 直接重新测试,或通过调整 terminals 等参数减少测试压力后重新测试。 - 如果没有使用官网提供的 obtpcc 包,请使用 obtpcc 进行测试。 如果上述方法均无法解决问题,请到官网 [问答区](https://ask.oceanbase.com/) 提问,会有专业人员为您解答。 ## OBAgent 相关报错 ### OBD-4000:Fail to reload x.x.x.x 错误原因:该节点的 `http_basic_auth_password` 与 OBD 中存储的 `http_basic_auth_password` 不符,导致 OBD 不能正确的访问 obagent。 解决方法:若您确认二者相符,请检查此次修改的选项中是否包含了当前版本不支持的配置项或者配置项名称是否书写错误。 ### OBD-4001:Fail to send config file to x.x.x.x 错误原因:出现该报错的原因有两点,请您依次进行检查。 - obagent home_path 磁盘空间是否充足。 - 配置文件中的 user 用户(未填的情况下默认为当前用户)是否拥有 obagent home_path 的写权限。 解决方法:您可通过以下两种方式解决。 - 运行命令添加或修改 user 信息。 ```shell obd cluster edit-config ``` - 登陆到目标机器,为当前账号赋予对应目录的写权限。 ## ODP 相关报错 ### OBD-4100:x.x.x.x need config "rs_list" or "obproxy_config_server_url" 错误原因:服务器获取不到 rs_list/obproxy_config_server_url 信息。 解决办法:执行如下命令打开配置文件,添加或修改 rs_list/obproxy_config_server_url 配置项,修改后根据输出执行对应重启命令。 ```bash obd cluster edit-config ``` ### OBD-4101:failed to start x.x.x.x obproxy: xxx 错误原因:启动 ODP 失败。 解决办法:需根据提示进一步分析。 ## Grafana 相关报错 ### OBD-4200:x.x.x.x grafana admin password should not be 'admin' 错误原因:grafana 组件 admin 用户的 password 不应该是 admin。 解决办法:执行如下命令打开配置文件,添加或修改 password 信息,修改后根据输出执行对应重启命令。 ```bash obd cluster edit-config ``` ### OBD-4201:x.x.x.x grafana admin password length should not be less than 5 错误原因:grafana 组件 admin 用户的 password 长度不能小于 5 位。 解决办法:执行如下命令打开配置文件,添加或修改 password 信息,修改后根据输出执行对应重启命令。 ```bash obd cluster edit-config ``` ## OCP Express 相关报错 ### OBD-4300:x.x.x.x: failed to query java version, you may not have java installed 错误原因:OBD 获取不到服务器上 Java。 解决办法: 1. 安装 Java,详细步骤可参考 [常见问题](5.faq/1.faq.md) 中 **部署 OCP Express 前如何配置 Java 环境**。 2. 如果 Java 已经安装,可以通过配置 `java_bin` 来指定 Java 可执行文件的路径。 ### OBD-4301:x.x.x.x: ocp-express need java with version xxx 错误原因:服务器上 Java 版本过低。 解决办法:安装提示版本的 Java,如果目标版本 Java 已经安装,可以通过配置 `java_bin` 来指定 Java 可执行文件的路径。 ### OBD-4302:x.x.x.x not enough memory. (Free: xxx, Need: xxx) 错误原因:服务器上没有足够内存 解决办法:分为以下几种解决方法。 - 若机器本身内存不足,您需执行 `obd cluster edit-config` 命令打开配置文件,调小 `memory_limit` 配置;或者更换其他内存足够的机器 - 若是机器剩余内存资源不足,如果存在可以释放的 cached,您可以先使用以下命令尝试释放。 ```shell echo 3 > /proc/sys/vm/drop_caches ``` ### OBD-4303:x.x.x.x xxx not enough disk space. (Avail: xxx, Need: xxx) 错误原因:服务器磁盘没有足够的空间。 解决办法:请您自行检查并清理磁盘。 ### OBD-4304:OCP express xxx needs to use xxx with version xxx or above 错误原因:部署 ocp-express 组件需要使用对应版本的组件。 解决办法:执行如下命令打开配置文件,修改提示对应组件版本,修改后根据输出执行对应重启命令。 ```bash obd cluster edit-config ``` ### OBD-4305: There is not enough xxx for ocp meta tenant 错误原因:没有足够的日志磁盘、内存去创建 OCP meta 租户。 解决办法: - 如果是白屏 **最大占用** 模式部署,或者黑屏使用 `obd cluster autodeploy` 命令部署的部署方式,建议尝试清理磁盘、内存后重试。 - 如果用户配置了集群规格,需要根据提示信息,调大 `oceanbase-ce` 组件的相应配置项。例如内存相关配置项 `memory_limit`/`memory_limit_percentage`、日志盘相关配置项 `log_disk_size`/`log_disk_percentage`。 ## SQL 相关报错 OBD-5000:sql execute failed 错误原因:SQL 执行失败。 解决办法:需根据具体情况确定解决办法。