首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 集群常见问题
更新时间:2023-11-21 09:58:00
本节描述 OceanBase 集群管理相关的常见问题。
功能实现
Q1: X86 环境的 OCP 能管理 ARM 架构的 OceanBase 集群吗?
A: OCP V2.5.2 以及上版本支持。
Q2: V1.4.79 的 OceanBase 集群,可以使用什么版本的 OCP 进行部署?
A: 当前 OCP 版本均可支持,建议使用最新版本的 OCP。
Q3: OCP 是否支持 OceanBase 主集群为 X86 ,备集群为 ARM 的部署规划?
A: OCP V3.1.0 及以上版本支持。
OceanBase 集群管理
Q1: 主备集群的延迟在哪里查看?
A:进入到集群概览,切换到集群拓扑图,在图上查看主备集群之间的延迟。
Q2: 任务报错 machine resource is not enough to hold a new unit ,应如何处理?
A:机器资源不足,导致副本迁移类的运维任务无法正常进行,可添加主机解决问题。
Q3: 请问 OCP-Agent 自动清理 observer.log 的清理策略是什么?
A: 当空间利用率达到 80% 时,将只保留最近的 100 个日志记录。
Q4: 集群的拓扑图状态是如何获取的?
A: 状态是根据 MetaDB 中的 ob_server 表记录获取。
Q5: OCP 的会话总数是如何统计出来的?
A: 从 OceanBase 内部表 __all_virtual_processlist 中查询。
Q6: 什么是非活跃会话,管理机制是什么?
A: 建立连接后一段时间没有操作的会话是非活跃会话,默认将 28800 秒没有操作的会话标记成 inactive 状态。依赖客户端的超时释放,OceanBase 不会主动释放连接。
Q7: inactive 的会话会占用 Unit 的最大连接数吗?
A: Unit 的最大连接数不会影响真实连接数分配,真正有用的是 OBServer 的连接数上限,OCP 使用 Unit 连接数来做告警。
Q8: OCP 与 OceanBase 不在同一个网段应打通哪些端口?
A: 详见 组件监听端口列表 。
Q9: 有过失败的任务的集群如何快速删除?
A: 修改 MetaDB 的 ob_cluster 表中集群的状态 Operating 为 NORMAL 。
Q10: OceanBase 集群健康巡检的巡检结果描述中提示 区副本数:unknown > 100000,严重,什么意思?
A: unknown 表示获取分区数失败。建议按如下顺序定位问题:
查看 OceanBase 集群内 租户管理 界面中的 容量_分区数量 图中是否显示相关数据,结果未显示。
查看对应主机的 进程列表 中进程是否正常,发现 obstat 和 logtailer 进程异常停止。
可能是域名解析有问题,主机无法访问数据库,导致 obstat 和 logtailer 启动失败。
建议在报错主机的 /etc/resolve.conf 配置域名服务器地址后再查看。
Q11: OCP 删除集群不能执行也不能放弃,什么原因?
A: 用户黑屏删除了 OBServer 集群的主机,导致该主机异常离线且 MetaDB 中保存的集群信息与 OceanBase 集群里不一致。OceanBase 集群中有个别 OBServer 离线的情况下,不建议执行强制删除集群。这种情况下建议联系技术支持工程师手工修正 MetaDB 中的相关数据。
OceanBase 集群部署
Q1: 新建集群报错 illegal argument exception ,怎么解决?
A: 请检查 RPM 包是否重名。
Q2: 安装 OceanBase 在确认提交信息时,界面报错 发生一个未知的错误,错误原因:{0},错误信息:{1},请联系管理员, 什么原因?
A: 检查使用的 OceanBase 软件包包名是否被修改过。
Q3: 主集群为 X86,打算添加的备集群的主机为 AArch64,部署的备集群使用了 X86 软件包,是否可行?
A:异构主备集群存在风险,不建议异构部署。
Q4: 使用 OCP 创建集群,报错 zone 优先级不正确,什么原因?
A: 第一优先级的 Zone 所对应的 Region 下,至少要有两个 Zone 存在。
Q5: 使用 OCP 创建备库,是否这个创建备库的任务结束时整个数据的主备同步就结束了?
A: 目前创建备库任务的时间与备库开始同步的时间没有直接关系。但只有创建备库任务完成,这个备库才能对外提供服务。
Q6: OCP V2.5.x 版本创建主备库时,tenant 和 table 的 primary_zone 都设置为 RANDOM,执行任务时却报错 Add cluster not allowed 并提示 CHECK PRIMARY ZONE OR LOCALITY CONFIG , 什么原因?
A:用户表配置了 primary_zone 或 locality 。参考如下方法修改:
在系统租户的 OceanBase 库中查看哪些表配置 primary_zone 或 locality。
select table_id,tenant_id,primary_zone,locality,table_name from __all_virtual_table;记录配置了 primary_zone 或 locality 的表名为 t ,租户 id 为 1001 。
在对应租户的库中执行
alter table t set primary_zone = default;取消 table 级别 Primary Zone 的设置。在对应租户的库执行如下语句,取消表级别 locality 的设置。
select locality from __all_tenant where tenant_id = 1001; #记录查询结果为 F@zone1,F@zone2,F@zone3 。 alter table t set locality = 'F@zone1,F@zone2,F@zone3';
Q7: 私有云同一网络环境中,已有一套创建了 OceanBase 的 OCP ,在部署一套 OCP 并在其上创建 OceanBase V2.2.7x,除了 OCP 部署时需要修改 /root/t-oceanbase-antman/obcluster.conf 中 cluster_id 的默认值为 100000 ,业务集群创建时,还有其他需要修改的吗?
A: 使用 OCP 创建 OceanBase 集群时,clusterid 和 clustername 的值要保持唯一。
OceanBase 集群接管
Q1: 导入集群时,主机准备任务报 python 依赖不存在,如何解决?
A:主机未通过装机模板来安装,手动安装 python 脚本。建议走正规的装机模板安装。
Q2: 使用 OCP V2.5.x 接管集群时,报错 error code:11042 接管集群预检查失败,失败原因:OBServer 节点检查不通过,怎么解决?
A: 建议使用预检查接口查看 OBServer 节点检查不通过的具体原因。调用接口方法如下:
curl -X POST --user admin:xxx \
-H "Content-Type:application/json" \
-d '{"rootSysPassword":"xxxxx", #必填,root@sys密码。
"address":"xxxxx", #必填,集群连接地址。
"port":2888, #必填,集群连接端口。
"connectionMode": "proxy" #选填,连接模式,可选值 direct | proxy,缺省为direct。
"clusterName": "xxx", #选填,当连接模式为 proxy 时必填。
"obClusterId": xxx #选填,当连接模式为 proxy 且被接管集群为备集群时必填。
}' \
"http://example.com:8080/api/v2/ob/clusters/takeOverPreCheck"
Q4:OCP 接管其他 OCP 部署的集群注意事项?
A:您在 OCP 接管其他 OCP 部署的集群应注意以下几点:
需要确认业务访问待接管 OceanBase 集群的方式,确认接管集群对业务的影响。
需要将接管的集群从其他 OCP 中迁出,或者停掉其他的 OCP。
单 OCP 场景下接管集群时,需先接管 OceanBase 主集群,再接管 OceanBase 备集群。
OCP 多集群场景下接管集群时,需先在某一 OCP 中接管 OceanBase 主集群后,再通过任一 OCP 接管 OceanBase 备集群。
OceanBase 集群升级
Q1: 主备集群应该如何升级?
A:在主集群和备集群的概览页面,右上角都有 升级版本 的按钮。无论是主集群还是备集群的升级入口,都可以对整个主备集群发起升级操作。
Q2: OCP 升级 OceanBase 集群时,刷新 schema info 报错 timeout ,如何解决?
A:执行如下命令,查看 schema 和 version:
select tenant_id, refreshed_schema_version from __all_virtual_server_schema_info " + " where svr_ip = '%s' and svr_port = %d and refreshed_schema_version >
select max(value) value from oceanbase.__all_virtual_sys_parameter_stat where name = 'min_observer_version'
确认无误后手工重试 CheckRefreshSchemaTask。
Q3: 升级 OceanBase 集群时 execute upgrade checker 报错,是为什么?
A:可能是 RPM 包下载超时,建议重试。
Q4: 升级 OceanBase V2.2.71 版本到 OceanBase V2.2.74 ,报错 没有对应的版本节点,什么原因?
A: OCP 机器上的 /home/admin/ocp-server/etc/oceanbase_upgrade_dep.yml 文件定义的升级路径不完整,建议版本信息补充至 OceanBase V2.2.74,如下:
#以上省略
- version: 2.2.70
can_be_upgraded_to:
- 2.2.71
- version: 2.2.71
can_be_upgraded_to:
- 2.2.72
- version: 2.2.72
can_be_upgraded_to:
- 2.2.73
- version: 2.2.73 # 最后一个版本,需要定义一下,否则同版本升级会找不到路径,以后最后一个版本同样需要这样定义 欣煦
can_be_upgraded_to:
- 2.2.74
Q5: OceanBase 集群升级路径确认界面中提示 需要替换 binary 是什么意思?
A: 替换 binary 是指替换 OBServer 节点,V2.2.72 和 V2.2.73 只需运行 pre/post 脚本,不需要替换 OBServer 节点的 binary 文件。此处提示仅作为提示,不需要用户手工操作,升级任务会自动完成替换。
Q6: 升级 OceanBase 集群,报错 [alter system stop zone ?]; SQL state [25000]; error code [4012]; Statement is timeout ,如何解决?
A: 建议重试。
Q7: OceanBase 集群从 V2.2.30 版本升级至 V2.2.50 版本失败,什么原因?
A: OceanBase 升级依赖的 V2.2.40 版本的 RPM 包没有上传,建议上传后重试。
Q8: 客户需要升级小版本,然后再升级大版本,OCP 是否支持同版本升级?
A: 支持,但小版本号需不一样。
Q9: 使用 OCP 升级 OceanBase 集群,执行到 Install rpm 步骤时有一台机器失败,报错 Cannot allocate memory。
A: 内存不足,建议根据实际情况选择清理内存或者扩容。
Q10: 升级 OceanBase 集群时 upgrade_checker.py 报错 MyError: "(1, Decimal('1.0000')) check_logonly_replica_unit failed, not found log_type resource_pool for this tenant ,什么原因?
A: 检查待升级 OceanBase 集群下是否有日志型副本,如果有建议将日志型副本替换成 F 副本。
Q11: 如果 OceanBase 集群除了 sys、ocp-meta、ocp-monitor 租户外,还有 omsmeta 和 odpmeta 租户,应该如何升级?
A: 联系 OceanBase 技术支持人员获取升级手册正常执行升级,升级某集群不会影响到其他应用的租户。
OceanBase 集群监控
Q1: OCP 创建集群时,ocp_monitor 用户是否会被自动创建,该用户默认密码是什么?
A: ocp_monitor 用户会被自动创建,但该用户默认密码仅监控时由系统调用该用户时使用,用户无需感知。
Q2: 集群里性能监控界面的事务日志耗时是指 SQL 的平均耗时还是事务的平均耗时?
A: 事务。
集群巡检
Q1: OceanBase 的 /data/1 数据盘默认最大可占用主机磁盘的 90%,而集群健康巡检里的主机磁盘使用率阈值设置为 85%,是否合理?
A: 健康巡检时会忽略 OceanBase 数据盘的巡检。