暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据库学习Q&A 046:OceanBase 数据库中,如果 OBServer 节点重启时在初始化 Clog 失败会报什么错,如果 OBServer 节点启动时初始化失败报错应当如何操作恢复系统?

报错描述报错日志恢复方式
clog_shm(共享内存文件中记录 flush_pos_ 大于 Clog 最后一个文件的有效位置)observer.log CLOG 模块报出 [ERROR] 级别 -4016 错误码,报错关键字是
The clog start pos is unexpected, (ret=-4016, file_id=1018, offset=51658630
删除 store 目录下的 clog_shm 文件之后重新启动。
迭代 Clog 文件出错,这通常是由于 Clog 文件本身出了问题observer.log CLOG 模块报出 [ERROR] 级别 -4016 错误码,日志报错关键字有:
  • invalid scan_confirmed_log_cnt(ret=-4016, ret="OB_ERR_UNEXPECTED",
  • notify_scan_finished_ finished(ret=-4016, cost_time=154)
  • notify_scan_finished_ failed(ret=-4016)
  • log scan runnable exit error(ret=-4016)
这类报错通常是因为 Clog 文件出了问题,或者迭代 Clog 文件出了问题:
  • 如果是少数派副本出现如上问题,可以通过删除出错副本恢复。
    说明
    需要特别注意的是:只有当少数派副本出现这样的问题后,可以通过该方式恢复。
  • 如果多数派出现了上述问题,请联系 OceanBase 数据库技术支持,切勿私自操作,该动作操作不当可引发数据丢失。

例如 3 副本的环境中,其中一个副本出错。
恢复方式1:
找一台类似机器快速加入到 OceanBase 集群中,OceanBase 集群自动补齐第三副本。需要确认配置项 enable_rereplication 处于打开状态。出问题的机器最终会永久下线。
恢复方式2:
找出问题的机器走永久下线流程并安全清空故障机器上的数据,重新以新机器方式重新加入集群。
  1. 永久下线,执行如下命令下线故障机器,查询 DBA_OB_SERVERS, 没有下线机器对应记录,则下线操作完成。
    alter system delete server '$obs0_ip:$obs0_port';
  2. 清空故障机器上的数据。
  3. 以新机器的方式重新加入集群。
    alter system add server '$obs0_ip:$obs0_port';
  4. 之后集群会发起补副本操作,补齐第三副本,同样需要确认 enable_rereplication 处于打开状态。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论