OceanBase 故障恢复相关问题求助

之前在本地开发环境,遇到过一次因为意外断电,导致部分块文件损坏,进而导致 OceanBase 无法重启的问题,最后不得不重装(数据也全没了)。

因为这一次故障经历,让我特别关心 OceanBase 的故障恢复相关问题。

众所周知,MySQL 有恢复模式,比如设置 innodb_force_recovery 参数来强制忽略损坏的文件错误,进而实现正常启动。

请问:

  1. 当 OceanBase 也因为意外断电导致文件损坏、无法正常启动时,该如何使其恢复正常( 或者,能够安全导出数据 )呢 ?是否也有类似 MySQL 的 recovery 模式 ?
  2. 如果 OceanBase 的3个副本中,有2个副本出现磁盘故障,对应的本地数据文件损毁,有什么办法可以让该集群起死回生吗 ?
  3. 出于安全考虑,我们一般会定期进行磁盘备份或快照,将所有磁盘备份到 阿里云的 OSS ( 或 AWS S3 等类似物)。不过由于意外的随机性,日志盘、数据盘 的备份可能没有完全对齐,不知道 OceanBase 是否有相应的自动纠错机制去应对这种情况呢 ?还是说,如果备份恰好没有对齐,即使从备份中恢复,也将导致无法启动 ?

在此先感谢各位大佬的热心帮助~

暂不支持innodb_force_recovery,参考 一个关于clog 损坏恢复的建议

问题1:单机环境数据文件损坏,ob暂时没有对外类似recovery模式,所以基本无法直接恢复。
问题2:集群多数派故障,恢复要求很严格,而且有丢数据风险,暂无对外方案。
问题3:可以使用OB数据备份功能即可,目前也支持OSS S3 COS备份介质,定期全备+持续归档备份。

感谢您的热心回复。

我建议,不管是单机还是集群,OB 都可以搞一个类似的 recovery 模式。
多数派故障,虽然有丢数据风险,但是只丢少量数据,也好过损失全部数据。

第三方问题,备份功能我是知道的,我就是担心 日志盘 和 数据盘 的同步进度无法保证完全一致(毕竟是各自独立的IO写入),在这两个备份没有对齐的情况下,恢复数据是否也会因此校验不通过,进而导致无法恢复成功。

不会,比如指定恢复时间戳,可以参考相关备份恢复文档。OceanBase分布式数据库-海量数据 笔笔算数