【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】CE 4.3.4.1-101000032024121814
【问题描述】Oceanbase 集群中的一台节点的sstable/block_file 文件误删了, 现在该节点没办法启动
【复现路径】问题出现前后相关操作
【附件及日志】
现在OCP 无法删除该节点,也无法重装该节点, 现在应该如何操作
各位大佬有空帮忙看看
[@论坛小助手]
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
论坛小助手
#3
日志采集场景: 集群无法连接
日志采集命令: obdiag gather scene run --scene=observer.cluster_down
由于您遇到的情况比较特殊,涉及到生产环境中sstable/block_file文件误删导致节点无法启动,并且OCP也无法删除或重装该节点。我们首先需要收集详细的日志信息来分析问题。
请您使用上述命令进行日志采集,并将采集到的日志提供给我们以便确认问题所在。
为了更好地帮助您解决问题,请您提供以下信息:
- 误删操作的具体时间点以及误删的文件路径。
- 该节点在集群中的角色(如Root Service、Leader等)。
- 其他节点是否正常工作,整个集群的状态如何。
- 是否有最近的备份可以恢复。
- OCP控制台是否有报错信息或者异常日志。
这些信息有助于我们更准确地定位问题并给出修复建议。同时,在生产环境中发生此类问题时,强烈建议尽快联系官方技术支持团队获取专业指导,以避免造成更大范围的影响。
附上敏捷诊断工具 obdiag 使用帮助链接
论坛小助手
#5
根据您提供的信息,误删了 OceanBase 集群中一台节点的 SSTable/block_file 文件,并且该节点无法启动,而其他两个节点能够正常工作。此外,集群开启了日志归档功能。
在这种情况下,您可以尝试以下步骤来修复问题:
1. 确认集群状态
确保其他节点处于健康状态,并且整个集群可以继续提供服务。可以通过 OCP 或者使用 obclient
连接到系统租户查询集群的状态:
obclient [oceanbase]> SELECT * FROM oceanbase.__all_server;
2. 评估数据丢失情况
-
检查删除文件的时间点:确定误删操作的具体时间点。
-
查看日志归档状态:由于启用了日志归档,可以利用归档日志进行恢复。请参考文档片段8中的说明,通过视图查看归档状态。
3. 从备份或归档日志中恢复
如果存在最近的全量备份,建议优先考虑从备份中恢复受影响的节点。如果没有可用的全量备份,则需要依赖于归档日志来进行增量恢复。
使用归档日志恢复
-
停止故障节点的服务(如果尚未停止)。
-
清理残留的数据目录:确保故障节点上的数据目录为空,但保留配置文件等必要信息。
-
重新加入集群:将此节点作为新成员重新加入到集群中。
-
应用归档日志:根据归档日志的时间戳和 SCN 信息,逐步应用归档日志以追平主库的数据。
具体命令示例(假设您有适当的权限):
# 停止 OBSERVER 服务
obd cluster stop <cluster_name>
# 清理残留的数据目录
rm -rf /path/to/data/*
# 重新部署并启动该节点
obd cluster deploy <cluster_name> -c <config_file>
obd cluster start <cluster_name>
请注意,上述步骤中的路径和配置应根据您的实际情况调整。同时,在执行这些操作之前,请务必仔细阅读官方文档,并确保理解每一步骤的影响。
4. 联系技术支持
鉴于这是一个生产环境的问题,强烈建议尽快联系 OceanBase 的官方技术支持团队获取专业的帮助和支持。他们可以根据具体情况为您提供更详细的指导,并协助完成恢复过程。
希望以上信息对您有所帮助!如果有任何疑问或需要进一步的帮助,请随时告知。
更多信息请查看:
- 暂停或开启日志同步
- 查看 Piece 信息
- 日志归档概述
- 物理备库同步过程中卡住
- oceanbase.CDB_OB_LS
- ARCHIVELOG
- Switchover 或 Failover 相关问题
- NOARCHIVELOG
- 修改集群级日志归档状态
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)
手动重建这个节点,软件不用重装,清空相关数据和日志目录(保留配置文件目录)。具体方法跟 数据文件缩容是一样的。可以参考: OB 数据文件缩容技巧