OceanBase恢复阻塞,观察rootserver.log报错:file not exist(ret=-9011, path="***/mysqlt/archive/piece_d1004r4p4/single_piece_info.obarc"

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】v 4.2.1.1
【操作过程】按如下步骤进行备份之后,进行恢复,恢复阻塞。
备份过程:

  1. nfs server共享目录:
    /opt/obbackup/archive和/opt/obbackup/data
    nfs client(ob节点)挂载目录:
    /opt/obbackup/archive → nfsserverip:/opt/obbackup/archive
    /opt/obbackup/data → nfsserverip:/opt/obbackup/data
  2. 给租户mysqlt设置备份目录:
    日志归档目录: /opt/obbackup/archive
    数据备份目录:/opt/obbackup/data。
  3. 启动租户mysqlt日志归档。
  4. 当租户mysqlt日志归档状态处于doing状态后,发起租户mysqlt全量备份。
  5. 租户mysqlt全量备份结束之后,nfs server端上拷贝目录,相当于把备份出来的文件再备份一遍:
    归档目录拷贝到:/data/opt/obbackup/archive
    数据目录拷贝到:/data/opt/obbackup/data。

恢复过程(原集群里恢复新租户mysqlt_restore):

  1. 停止租户mysqlt日志归档
  2. 卸载ob节点的nfs目录
  3. ob节点挂载目录:
    /opt/obbackup/archive → nfsserverip:/data/opt/obbackup/archive
    /opt/obbackup/data → nfsserverip:/data/opt/obbackup/data
  4. 发起新租户恢复命令,恢复一直处于运行中,已经运行快1个小时了。(mysqlt租户的数据很少,按上述步骤有恢复成功过,时间大概5min左右)

问题:

  1. 能否按照上述过程备份恢复?

  2. 观察rootservice.log,恢复命令发起不久,有报错日志:single_piece_info.obarc 文件不存在


    这个文件single_piece_info.obarc是否是此次恢复阻塞的关键点呢?根据官方文档给的说明: 物理备份与恢复概述-V4.2.1-OceanBase 数据库文档-分布式数据库使用文档 single_piece_info.obarc是记录日志 Piece 的元信息。这个文件是什么时候生成的,恢复阻塞是不是备份之后拷贝日志归档目录的时候,这个文件还没生成?

看描述有恢复成功过就说明可以恢复。
可以检查归档目录下的 rounds 目录,确认是否有归档元文件缺失(如 round_d1001r1_end.obarc

rounds目录下,没有round_d1001r1_end.obarc,只有round_dxxxxrx_start.obarc文件。

对于inactive piece,要求single_piece_info.obarc存在,麻烦复现时候执行
查看物理恢复进度

select * from CDB_OB_RESTORE_PROGRESS\G

有个地方我可能没说明白,按问题描述里备份、恢复步骤恢复成功过,但是不是同一个备份集。

备份过程中观察恢复进度,一直是图中的样子,阻塞了19个小时了:

single_piece_info.obarc我看了一下拷贝出来的备份文件,确实没有。

可能是备份集存在问题,重新发起个全备 换个新的备份集试试呢