日志备份故障处理
本文列出了在使用日志备份功能时,可能会遇到的故障及相应的解决方法。
如果遇到未包含在此文档且无法解决的问题,可以在 AskTUG 社区中搜索答案或提问。
在使用 br restore point
命令恢复下游集群后,无法从 TiFlash 引擎中查询到数据,该如何处理?
在 v6.2.0 版本中,使用 PITR 功能恢复下游集群数据时,并不支持恢复下游的 TiFlash 副本。恢复数据之后,需要执行如下命令手动设置 schema 或 table 的 TiFlash 副本:
ALTER TABLE table_name SET TIFLASH REPLICA count;
日志备份任务的 status
变为 ERROR
,该如何处理?
在运行日志备份过程中,遇到错误后经过重试也无法恢复的故障场景,任务会被设置为 ERROR
状态,如:
br log status --pd x.x.x.x:2379
● Total 1 Tasks.
> #1 <
name: task1
status: ○ ERROR
start: 2022-07-25 13:49:02.868 +0000
end: 2090-11-18 14:07:45.624 +0000
storage: s3://tmp/br-log-backup0ef49055-5198-4be3-beab-d382a2189efb/Log
speed(est.): 0.00 ops/s
checkpoint[global]: 2022-07-25 14:46:50.118 +0000; gap=11h31m29s
error[store=1]: KV:LogBackup:RaftReq
error-happen-at[store=1]: 2022-07-25 14:54:44.467 +0000; gap=11h23m35s
error-message[store=1]: retry time exceeds: and error failed to get initial snapshot: failed to get the snapshot (region_id = 94812): Error during requesting raftstore: message: "read index not ready, reason can not read index due to merge, region 94812" read_index_not_ready { reason: "can not read index due to merge" region_id: 94812 }: failed to get initial snapshot: failed to get the snapshot (region_id = 94812): Error during requesting raftstore: message: "read index not ready, reason can not read index due to merge, region 94812" read_index_not_ready { reason: "can not read index due to merge" region_id: 94812 }: failed to get initial snapshot: failed to get the snapshot (region_id = 94812): Error during requesting raftstore: message: "read index not ready, reason can not read index due to merge, region 94812" read_index_not_ready { reason: "can not read index due to merge" region_id: 94812 }
此时,你需要根据错误提示来确认故障的原因并恢复故障。确认故障恢复之后,可执行下面的命令来恢复备份任务:
br log resume --task-name=task1 --pd x.x.x.x:2379
备份任务恢复后,再次查询 br log status
,任务状态变为正常,备份任务继续执行。
● Total 1 Tasks.
> #1 <
name: task1
status: ● NORMAL
start: 2022-07-25 13:49:02.868 +0000
end: 2090-11-18 14:07:45.624 +0000
storage: s3://tmp/br-log-backup0ef49055-5198-4be3-beab-d382a2189efb/Log
speed(est.): 15509.75 ops/s
checkpoint[global]: 2022-07-25 14:46:50.118 +0000; gap=6m28s
执行 br log resume
命令恢复处于暂停状态的任务时报 ErrBackupGCSafepointExceeded
错误,该如何处理?
Error: failed to check gc safePoint, checkpoint ts 433177834291200000: GC safepoint 433193092308795392 exceed TS 433177834291200000: [BR:Backup:ErrBackupGCSafepointExceeded]backup GC safepoint exceeded
暂停日志备份任务后,备份程序为了防止生成变更日志的 MVCC 数据被 GC,暂停任务程序会自动将当前备份点 checkpoint 设置为 service safepoint,允许保留最近 24 小时内的 MVCC 数据。当超过 24 小时后,备份点 checkpoint 的 MVCC 数据已经被 GC,此时程序会拒绝恢复备份任务。
此场景的处理办法是:先执行 br log stop
命令来删除当前的任务,然后执行 br log start
重新创建新的日志备份任务,同时做一个全量备份,便于后续做 PITR 恢复操作。
日志备份过程中执行分区交换 (Exchange Partition) DDL,在 PITR 恢复时会报错,该如何处理?
在执行 PITR 恢复日志过程中,出现如下报错:
restore of ddl `exchange-table-partition` is not supported
因为当前 v6.2.0 版本的日志备份功能尚且不兼容分区交换 (Exchange Partition) DDL,在使用日志备份功能时,应尽量避免执行分区交换 DDL。如果已经执行此 DDL,需要立即做一次全量备份操作,PITR 即可恢复本次全量备份点之后的日志数据。