oceanbase集群3节点其中一个节点磁盘损坏,集群启动后不能登录租户

【 使用环境 】生产环境
【 OB or 其他组件 】oceanbase
【 使用版本 】OceanBase_CE 4.1.0.0 (r100000202023040520-0765e69043c31bf86e83b5d618db0530cf31b707)
【问题描述】集群节点中一个机器磁盘损坏,通过
obd cluster start obcluster -s ip1,ip2
obd cluster start obcluster -c oceanbase-ce -s ip1
两种方式启动,未有报错,但是登录不了租户



租户可以查到

但是租户不能登录

【附件】

连接方式不对,看看这个文档吧
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000033604

通过odp 连接 需要 这个
-u:提供租户的连接账户,格式有:用户名@租户名#集群名集群名:租户名:用户名集群名-租户名-用户名 或者 集群名.租户名.用户名

你只有用户名,租户名,没有集群名


这个库有两个业务租户,其中一个可以正常登录,另外一个不行

麻烦发下完整observer.log日志呢。
如果文件太大可以压缩上传一下。

observer_当前日志.zip (7.4 MB)
最新的observer日志是这个,日志刷的很快

可以通过诊断工具的巡检功能扫下看下是不是有什么已知的问题。https://www.oceanbase.com/docs/common-obdiag-cn-1000000000314319

可以用root@sys 查询 select * from oceanbase.V$OB_UNITS看一下无法登录的租户的unit分布,检查下这个租户的uni是不是只分布在t只存在出故障的节点


问题租户是1002


虽然是按照2节点启动,但是似乎进程还是三节点的配置,他会去访问有问题的节点么


在sys租户查询元数据会hang住,同时报错ERROR 4019 (HY000): Size overflow

在有损坏磁盘的机器上启动集群,ob 应该不会检测磁盘有没有损坏,但启动后的各种服务在读写磁盘时应该会出现不可预知的错误。

目前的启动方式是在未出问题的节点上启动的

grep ‘\-4019’ observer.* 捞下日志看看呢

查了下,并未有信息

在observer.log日志中似乎表明租户1002无法获取。
grep ‘dump tenant.*tenant={id:1002’ observer.log| sed “s/,/\n/g”
tenant.log (14.3 KB)
observer.log | grep “WARN|ERROR|errcode”:
err.zip (1.6 MB)

[2023-11-16 21:42:37.477854] WDIAG [SERVER] get_int (ob_inner_sql_result.cpp:500) [39673][SqlMemTimer][T1002][Y0-0000000000000000-0-0] [lt=10][errcode=-4152] get obj error(ret=-4152)
[2023-11-16 21:42:37.477865] WDIAG [SQL] fetch_sys_variable_version (ob_schema_service_sql_impl.cpp:4372) [39673][SqlMemTimer][T1002][Y0-0000000000000000-0-0] [lt=12][errcode=-4152] fail to get column in row. (column_name=“max_schema_version”, ret=-4152)
[2023-11-16 21:42:37.477903] WDIAG [SHARE.SCHEMA] get_sys_variable_schema (ob_schema_service_sql_impl.cpp:1292) [39673][SqlMemTimer][T1002][Y0-0000000000000000-0-0] [lt=6][errcode=-4152] fail to fetch simple sys variable version(ret=-4152, tenant_id=1002, schema_version=1)
[2023-11-16 21:42:37.477914] WDIAG [SHARE.SCHEMA] fetch_sys_variable_schema (ob_schema_cache.cpp:1163) [39673][SqlMemTimer][T1002][Y0-0000000000000000-0-0] [lt=10][errcode=-4152] get tenant schema failed(ret=-4152, tenant_id=1002, schema_version=1, schema_status={tenant_id:1002, snapshot_timestamp:-1, readable_schema_version:-1})
[2023-11-16 21:42:37.477924] WDIAG [SHARE.SCHEMA] fetch_schema (ob_schema_cache.cpp:854) [39673][SqlMemTimer][T1002][Y0-0000000000000000-0-0] [lt=9][errcode=-4152] fetch sys variable schema failed(ret=-4152, schema_id=1002, schema_version=1)
[2023-11-16 21:42:37.477930] WDIAG [SHARE.SCHEMA] get_schema (ob_multi_version_schema_service.cpp:533) [39673][SqlMemTimer][T1002][Y0-0000000000000000-0-0] [lt=5][errcode=-4152] fetch schema failed(tenant_id=1002, schema_type=15, schema_id=1002, schema_version=1, ret=-4152)
[2023-11-16 21:42:37.477939] WDIAG [SHARE.SCHEMA] get_schema (ob_schema_getter_guard.cpp:4514) [39673][SqlMemTimer][T1002][Y0-0000000000000000-0-0] [lt=7][errcode=-4152] get schema failed(ret=-4152, ret=“OB_ERR_NULL_VALUE”, schema_status={tenant_id:1002, snapshot_timestamp:-1, readable_schema_version:-1}, schema_type=15, schema_id=1002, schema_version=1, specified_version=-1)
[2023-11-16 21:42:37.477946] WDIAG [SHARE.SCHEMA] get_sys_variable_schema (ob_schema_getter_guard.cpp:440) [39673][SqlMemTimer][T1002][Y0-0000000000000000-0-0] [lt=6][errcode=-4152] fail to get sys var schema(ret=-4152, ret=“OB_ERR_NULL_VALUE”, tenant_id=1002)
[2023-11-16 21:42:37.477952] WDIAG [SHARE.SCHEMA] get_tenant_system_variable (ob_schema_getter_guard.cpp:488) [39673][SqlMemTimer][T1002][Y0-0000000000000000-0-0] [lt=5][errcode=-4152] get tenant info failed(ret=-4152, ret=“OB_ERR_NULL_VALUE”, tenant_id=1002)
[2023-11-16 21:42:37.477957] WDIAG [SQL.ENG] get_max_work_area_size (ob_tenant_sql_memory_manager.cpp:841) [39673][SqlMemTimer][T1002][Y0-0000000000000000-0-0] [lt=3][errcode=-4152] get tenant system variable failed(ret=-4152, tenant_id_=1002)
[2023-11-16 21:42:37.477964] WDIAG [SQL.ENG] calculate_global_bound_size (ob_tenant_sql_memory_manager.cpp:1230) [39673][SqlMemTimer][T1002][Y0-0000000000000000-0-0] [lt=6][errcode=-4152] failed to get percent
[2023-11-16 21:42:37.477969] WDIAG [SERVER] runTimerTask (ob_tenant_duty_task.cpp:212) [39673][SqlMemTimer][T1002][Y0-0000000000000000-0-0] [lt=5][errcode=-4152] failed to calculate global bound size(ret=-4152, ids[i]=1002)

直连一下2881,正常、异常恢复的节点都试试,这个租户看能不能登陆

接着这里,手动执行下看下结果是啥:
SELECT max(schema_version) as max_schema_version from __all_sys_variable_history WHERE tenant_id = 1002 and schema_version <=1;

2881 其他租户可以登录,这个租户登录不了,异常节点在启动的时候,就没有指定启动,其他两个节点都试了登录