服务器集群,一个节点损害无法启动

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】社区版4.3.5
【问题描述】3台服务器集群server1、server2、server3,可能意外断电,重新启动时,通过obd cluster start 命令启动时,显示server3的oceanbase-ce is not running, obd cluster start -s server3 也无法启动,可能意外断电硬盘数据损坏,参考视频,清理server3上的相关文件


然后重启server3 也不能启动,obd cluster restart obyxyj -s 192.168.1.97 无法启动

扩容节点也不可以扩容,因为一个节点没有启动
[library2020@vm1795 ~/observer]$ obd cluster scale_out obyxyj -c config98_add.yaml
Open ssh connection ok
[WARN] server3(192.168.1.97) oceanbase-ce is not running
See https://www.oceanbase.com/product/ob-deployer/error-codes .
Trace ID: 46f3f4f0-ff25-11f0-ab61-005056bea5df
If you want to view detailed obd logs, please run: obd display-trace 46f3f4f0-ff25-11f0-ab61-005056bea5df,
现在的情况是server1、server2、server3分别对应zone1、zone2、zone3;我想把server3的节点删掉,然后重新加,但删除的最大问题是,zone中各只有一个节点,想删除server3节点,需要zone3有其他节点,但现在无法添加节点扩容,有没有其他节点迁移,导致不能删除节点,也无法删除zone3
文档给的如下提示,不能删除
即同 Zone 中其他节点的剩余资源不足以容纳待删除节点上的 Unit,将会导致 Unit 迁移失败,从而使该节点持续在删除状态中。
而删除zone3,又需要zone3中无节点,
因为server3已经很久无法启动,所以想放弃server3,从集群中删除掉
我现在的诉求是放弃zone3,删除后进行扩容,请问如何才能删除server3和zone3,或者不擅长zone3,直接删除server3

【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

针对您遇到的情况,建议首先使用 obdiag 工具来采集相关的日志信息,这将有助于我们分析该节点无法启动的原因。请按照以下步骤操作:

日志采集场景: 集群无法连接
日志采集命令: obdiag gather scene run --scene=observer.cluster_down

请您执行上述命令并收集日志,然后将日志文件压缩打包后发送给我们。这将帮助我们进一步了解您的情况并提供有效的解决方案。

另外,为了更准确地定位问题,我们还需要了解一些额外的信息,请您回答以下几个问题:

  1. 该节点是否尝试过重启?如果尝试过,重启后的表现是什么样的?
  2. 在节点无法启动之前,是否发生过特定的操作或事件(如软件升级、硬件变更等)?
  3. 能否提供该节点的日志信息中最近出现的错误信息或警告信息?
  4. 当前集群的状态如何?其他节点是否正常工作?
  5. 您是否有备份方案,以防止数据丢失?

感谢您的配合,我们将尽快为您解决这一问题。

附上敏捷诊断工具 obdiag 使用帮助链接

2 个赞

我只想把损坏的节点删掉,不需要查错,请回复我如何删除就可以了

1 个赞

了解下

1 个赞

6666

参考这里先删除locality在进行删节点
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476524


通过 ALTER TENANT 租户 locality=“FULL{1}@zone1, FULL{1}@zone2”; zone3的内容 已经全部删除,但ALTER SYSTEM DELETE SERVER “192.168.1.97:2882” zone=‘zone3’;还是报错,请问如何解决
SQL 错误 [4734] [HY000]: (conn=3221687772) can not migrate out unit ‘3’, no other available servers on zone ‘zone3’, delete server not allowed

SELECT * FROM oceanbase.dba_ob_units;
SELECT * FROM oceanbase.dba_ob_resource_pools;
SELECT * FROM oceanbase.dba_ob_tenants;
把zone3的unit删掉即可


这样直接删除吗
delete from oceanbase.dba_ob_units where unit_id in (3, 1003, 1004);

oceanbase.dba_ob_resource_pools和oceanbase.dba_ob_tenants 是否还需要删除


不是你这样删除的。。。参考下面文档
https://www.oceanbase.com/docs/common-oceanbase-database-standalone-1000000003577850

ALTER RESOURCE POOL sys_pool ZONE_LIST=(‘zone1’,‘zone2’);
ALTER RESOURCE POOL ocp_pool ZONE_LIST=(‘zone1’,‘zone2’);
DROP RESOURCE POOL pool_yxyj_zone3_uwh;
是否上面操作就可以,dba_ob_units 还需要修改吗
delete from oceanbase.dba_ob_units where unit_id in (3, 1003, 1004);



删除资源单元 DROP RESOURCE UNIT unitname;
删除资源池 DROP RESOURCE POOL poolname;

关于删节点前处理资源池配置操作:
根据资源池的配置方式,有两种处理方法:
场景 A: Zone3 有独立资源池
RESOURCE_POOL_LIST
– 查看资源池配置SELECT * FROM oceanbase.DBA_OB_RESOURCE_POOLS;
– 假设 zone3 有独立资源池 pool_z3
– 从租户移除该资源池
ALTER TENANT mysql_tenant RESOURCE_POOL_LIST = (‘pool_z1z2’);
– 删除资源池DROP RESOURCE POOL pool_z3;
场景 B: Zone3 与其他 Zone 共用资源池
– 假设资源池 pool1 的 ZONE_LIST 包含 zone1, zone2, zone3
– 修改资源池的 ZONE_LIST,移除 zone3
ALTER RESOURCE POOL pool1 ZONE_LIST = (‘zone1’, ‘zone2’);
– 假设资源池 pool1 的 ZONE_LIST 包含 zone1, zone2, zone3-- 修改资源池的 ZONE_LIST,移除 zone3ALTER RESOURCE POOL pool1 ZONE_LIST = (‘zone1’, ‘zone2’);
步骤 4: 确认 Zone3 上无 Unit
DB
– 确认 zone3 上已无任何 UnitSELECT * FROM oceanbase.DBA_OB_UNITS WHERE ZONE = ‘zone3’;