行行速速
#1
【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.4.2-ce,ob-oeprator,k8s部署
【问题描述】环境机房会频繁掉电,ob启动后出现文件损坏
【复现路径】
【附件及日志】
环境是k8s环境使用ob-operator部署的ob集群,三节点集群下对自愈能力要求比较高,想在出现了文件损坏的场景下可以让单节点自愈(3节点集群的单节点损坏)。
想了解一些内容:
- 是否有工具或方式可以主动检查数据文件损坏?
- 数据文件损坏是否有特定日志,或者特定的退出码,可以用来让外部确认数据文件损坏?
- observer文件损坏的修复手段有什么?除了下面这个方式。
目前有一个恢复操作,有点复杂,delete observer的cr,由operator自动删除对应的observer节点,删除后,obopeartor会自动添加新节点到集群中,过程中需要调整租户配置将异常节点上的unit也移走后,才能删除observer。
4 个赞
论坛小助手
#6
对于您的问题,目前提供的文档片段中已经给出了一部分解决方案和建议。关于文件损坏检查、特定日志或退出码以及文件损坏修复手段,以下是相关文档中的内容汇总:
-
是否有工具或方式可以主动检查数据文件损坏?
- 目前文档中没有提到具体的工具或命令来主动检查数据文件损坏。通常,数据文件损坏会在 OBServer 启动时检测到,并通过日志记录具体的错误信息。
-
数据文件损坏是否有特定日志,或者特定的退出码,可以用来让外部确认数据文件损坏?
- 数据文件损坏通常会导致 OBServer 启动失败,并在日志中记录具体的错误信息。您可以查看 OBServer 的日志文件,通常位于
/home/admin/oceanbase/log 目录下。常见的错误信息包括磁盘挂起(OB_DISK_HUNG)或文件损坏等。
- 例如,文档片段
doc_id: 29 提到了 -4392 OB_DISK_HUNG 错误,这可能是由于磁盘故障导致的。
-
observer 文件损坏的修复手段有什么?
-
方法一:自动恢复
- 在 OceanBase 4.2.3.0 版本之前,Pod IP 发生变化时 observer 将无法正常启动。您可以采用固定 IP 的方式让 observer 失活后原地重启。文档片段
doc_id: 696 提到了这一点。
-
方法二:手动删除并重建节点
- 当数据文件损坏时,可以手动删除并重建节点。具体步骤如下:
- 删除 observer 的 CR,由 ob-operator 自动删除对应的 observer 节点。
- 调整租户配置,将异常节点上的 unit 移走。
- ob-operator 会自动添加新节点到集群中。
- 文档片段
doc_id: 19852 提供了替换故障节点的详细步骤。
-
方法三:使用 OCP 替换 OBServer 节点
- 如果没有替换的服务器,可以考虑调整
server_permanent_offline_time 参数,再停止 observer 进程。文档片段 doc_id: 746 提到了这一点。
综上所述,您可以通过检查 OBServer 的日志文件来确认数据文件是否损坏,并根据具体情况选择合适的修复手段。如果您希望进一步提高自愈能力,可以考虑使用固定 IP 的方式让 observer 失活后原地重启,或者使用 OCP 替换节点的功能。
详情请参考:
- 故障恢复
- 替换故障节点
- 磁盘报错[errcode=-4392] disk is hung
- 使用 OCP 进行运维