三节点集群单服务器损坏恢复方案

【 使用环境 】测试环境
【 OB or 其他组件 】
搭建方式obd白屏搭建
OceanBase 4.2.0
obd2.2.0
【 使用版本 】
【问题描述】三节点集群,某台服务器损坏,集群还可以正常被访问,该服务器/redo和/data分区被格式化,系统分区正常,ob程序目录还存在,应该如何恢复该节点?
【复现路径】

服务器 角色 备注
xx.xx.xx.235 obproxy obsever ocpexpress
xx.xx.xx.236 obsever 损坏节点
xx.xx.xx.237 obsever

使用如下命令启动时报错

[root@oceanbase-kunlun-01 ~]# obd cluster start kunlunob -c oceanbase-ce -s xx.xx.xx.236
Get local repositories ok
Search plugins ok
Open ssh connection ok
Load cluster param plugin ok
Cluster status check ok
Check before start observer ok
Start observer ok
observer program health check ok
Connect to observer x
[ERROR] OBD-1006: Failed to connect to oceanbase-ce
See https://www.oceanbase.com/product/ob-deployer/error-codes .
Trace ID: 47534de4-7d1b-11ee-a047-4e6b78995657
If you want to view detailed obd logs, please run: obd display-trace 47534de4-7d1b-11ee-a047-4e6b78995657

日志里有类似如下的错误

ls: cannot access '/data/sstable/block_file': No such file or directory
df: /redo/clog: No such file or directory

【问题现象及影响】

【附件】

是用的什么管理工具呢,是否还有其他空闲的主机,可以向有问题的这台主机所在的zone添加一个observer,然后再将这台下线掉,ob 会自动复制数据恢复成三副本状态

这种情况可以走服务器的上下线流程来让机器重新加入集群,可以先看看__all_rootservice_event_history表中236服务器是否触发了永久下线,如果还没触发建议把 server_permanent_offline_time参数调到10分钟,确定触发永久下线后确保损坏的这台机器ob软件、目录、权限都没问题,然后重新拉起进程就能将机器加入集群,最后记得将server_permanent_offline_time改回默认值

用的是obd,可以申请其他空闲主机,但是我们想要恢复这台主机,怎么操作会比较方便?如果申请其他空闲主机,是不是要向这台主机所在的zone添加一个observer,将这台主机下线,重置一下,再加到zone中?

我发现236机器昨天就已经触发permanent_offline的事件了,如何做到重新拉起呢,我执行“obd cluster start kunlunob -c oceanbase-ce -s xx.xx.xx.236”还是报错,要直接去236机器上把进程运行起来吗

我一般都是直接进到机器把进程拉起来

我这里不行,我这里直接到机器上执行./bin/observer一会儿进程就挂了,然后观察一次完整的日志:
直接启动observer的observer.log.txt (184.3 KB)

CLOG的路径必须得跟原来一样

原本设定的redo和data分区都恢复了,但是被格式化了,里面都是空的

更换节点或者下线服务器,再新增服务器,同步副本

方案1:删除节点和zone ,ocp接管2节点,再走扩容zone;
方案2:agent服务还在的话,可以删除节点,obd重新安装个单机,初始化完成后,后台走添加节点操作。

2 个赞

使用重建操作系统 IP 未变化解决!

1 个赞

是使用OCP操作的吗?

是obd操作的