BR 还原一张报错"No tasks yet, skipping advancing

一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题

【TiDB 使用环境】测试环境
【TiDB 版本】v8.5.1
【部署方式】机器部署
【操作系统/CPU 架构/芯片详情】red 7.9
【机器部署详情】CPU大小/内存大小/磁盘大小
【集群数据量】1
做了全量备份用全量备份还原一张表一直NO TASKS YET

tiup br backup full
–pd “192.168.0.233:2379”
–storage “local:///tidb/br”
–ratelimit 128
–log-file /tmp/br-backup-$(date +%Y%m%d%H%M).log

还原一张表
tiup br restore table
–pd “192.168.0.233:2379”
–db “mjj”
–table “sbtest2”
–storage “local:///tidb/br”
–ratelimit 128
–log-file /tmp/br-restore-$(date +%Y%m%d%H%M).log

日志提示
[2026/07/24 17:03:47.039 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/24 17:03:50.939 +08:00] [INFO] [controller.go:422] [“load resource controller config after config changed”] [config=“{"degraded-mode-wait-duration":"0s","ltb-max-wait-duration":"30s","ltb-token-rpc-max-delay":"1s","request-unit":{"read-base-cost":0.125,"read-per-batch-base-cost":0.5,"read-cost-per-byte":0.0000152587890625,"write-base-cost":1,"write-per-batch-base-cost":1,"write-cost-per-byte":0.0009765625,"read-cpu-ms-cost":0.3333333333333333},"enable-controller-trace-log":"false","token-rpc-params":{"wait-retry-interval":"50ms","wait-retry-times":20}}”] [ruConfig=“{"ReadBaseCost":0.125,"ReadPerBatchBaseCost":0.5,"ReadBytesCost":0.0000152587890625,"WriteBaseCost":1,"WritePerBatchBaseCost":1,"WriteBytesCost":0.0009765625,"CPUMsCost":0.3333333333333333,"LTBMaxWaitDuration":30000000000,"WaitRetryInterval":50000000,"WaitRetryTimes":20,"DegradedModeWaitDuration":0}”]
[2026/07/24 17:03:59.038 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/24 17:04:11.038 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/24 17:04:23.037 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/24 17:04:35.040 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/24 17:04:47.038 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/24 17:04:59.008 +08:00] [INFO] [domain.go:3332] [“refreshServerIDTTL succeed”] [serverID=1301] [“lease id”=31549f93422f8f6c]
[2026/07/24 17:04:59.037 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/24 17:04:59.259 +08:00] [INFO] [import_mode_switcher.go:169] [“switch to import mode”]
[2026/07/24 17:05:11.038 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/24 17:05:23.037 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/24 17:05:35.037 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/24 17:05:47.038 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]

No tasks yet BR 在 backupmeta 里没找到任何需要恢复的 SST,大概率是备份时表不存在或者 local 存储的文件不完整。

我备份表存在 full

这条日志本身不是报错,只是 BR 进度推进器没有分片任务可处理的正常 INFO 打印,不是失败原因。 你的现状:BR 进程卡在不停刷这条日志、长时间不完成恢复 = BR 正常进入导入模式,但是 TiKV 完全没有拉取到备份 SST 文件、没有生成恢复任务,恢复流程僵死。

结合你的环境:本地local:///tidb/br本地磁盘备份、TiDB 8.5.3、之前有 PD 残留脏数据、TiKV 不稳定、NTFS 共享 PITR 问题,一共 5 个高频根因,按排查顺序处理。

这个报错通常是因为BR在备份时没有记录到表结构信息,或者备份路径不对。建议按以下步骤排查:

  1. 先确认备份目录下是否有文件:

    ls -la /tidb/br/
    

    看看有没有backupmeta文件

  2. 检查全量备份是否成功完成,用这条命令验证备份内容:

    tiup br validate decode --field "end-version" --storage "local:///tidb/br"
    
  3. 如果备份没问题,试试还原时加上–filter参数指定表:

    tiup br restore table --filter "mjj.sbtest2" --pd "192.168.0.233:2379" --storage "local:///tidb/br"
    
  4. 另外确认下备份和还原用的BR版本是否一致,建议都用v8.5.1。

大概率是备份时没成功写入数据,建议先跑个全量备份验证下。

看下文件路径权限 / 路径不匹配

[root@mgr-01 ~]# cd /tidb/br
[root@mgr-01 br]# ls
1 backup.lock backupmeta backupmeta.datafile.000000001 backupmeta.schema.000000002 checkpoints
[root@mgr-01 br]# ll
total 492
drwxr-xr-x 2 tidb tidb 16384 Jul 24 16:58 1
-rw-r–r-- 1 root root 78 Jul 24 16:58 backup.lock
-rw-r–r-- 1 root root 376 Jul 24 16:58 backupmeta
-rw-r–r-- 1 root root 29570 Jul 24 16:58 backupmeta.datafile.000000001
-rw-r–r-- 1 root root 441203 Jul 24 16:58 backupmeta.schema.000000002
drwxrwxrwx 3 root root 20 Jul 24 16:58 checkpoints
[root@mgr-01 br]# tiup br validate decode --field “end-version” --storage “local:///tidb/br”
Checking updates for component br… Starting component br: /root/.tiup/components/br/v8.5.7/br validate decode --field end-version --storage local:///tidb/br
Detail BR log in /tmp/br.log.2026-07-27T09.32.16+0800
467896495509864450
[root@mgr-01 br]# more /tmp/br.log.2026-07-27T09.32.16+0800
[2026/07/27 09:32:16.473 +08:00] [INFO] [meminfo.go:196] [“use physical memory hook”] [cgroupMemorySize=9223372036854771712] [ph
ysicalMemorySize=8369430528]
[2026/07/27 09:32:16.473 +08:00] [INFO] [cmd.go:164] [“calculate the rest memory”] [memtotal=8369430528] [memused=3588120576] [m
emlimit=4244439040]
[2026/07/27 09:32:16.473 +08:00] [INFO] [memory_monitor.go:62] [“Memory monitor starting”] [dump_dir=/tmp/br_heap_dumps] [using_
temp_dir=false] [memory_usage_alarm_ratio=0.8] [memory_limit_mb=4047]
[2026/07/27 09:32:16.474 +08:00] [INFO] [info.go:53] [“Welcome to Backup & Restore (BR)”] [release-version=v8.5.7] [git-hash=202
b7f47286a1109b5c957401d34c9358d130ae0] [git-branch=HEAD] [go-version=go1.25.10] [utc-build-time=“2026-07-24 02:13:38”] [race-ena
bled=false]
[2026/07/27 09:32:16.474 +08:00] [INFO] [common.go:975] [arguments] [__command=“br debug decode”] [field=end-version] [storage=l
ocal:///tidb/br]

[tidb@mgr-01 tidb]$ tiup br restore table \

–pd “192.168.0.233:2379”
–db “mjj”
–table “sbtest2”
–storage “local:///tidb/br”
–ratelimit 128
–log-file /tmp/br-restore-$(date +%Y%m%d%H%M).log
Starting component br: /home/tidb/.tiup/components/br/v8.5.7/br restore table --pd 192.168.0.233:2379 --db mjj --table sbtest2 --storage local:///tidb/br --ratelimit 128 --log-file /tmp/br-restore-202607271013.log
Detail BR log in /tmp/br-restore-202607271013.log
[2026/07/27 10:13:11.080 +08:00] [INFO] [collector.go:77] [“Table Restore failed summary”] [total-ranges=0] [ranges-succeed=0] [ranges-failed=0]
Error: [schema:1050]Table ‘__TiDB_BR_Temporary_Snapshot_Restore_Checkpoint_0.cpt_data’ already exists
[tidb@mgr-01 tidb]$ tiup br restore table --filter “mjj.sbtest2” --pd “192.168.0.233:2379” --storage “local:///tidb/br”
Starting component br: /home/tidb/.tiup/components/br/v8.5.7/br restore table --filter mjj.sbtest2 --pd 192.168.0.233:2379 --storage local:///tidb/br

感谢老师分享

现在权限都正常还原还是有提示[root@mgr-01 tidb]# cd br/
[root@mgr-01 br]# ll
total 492
drwxr-xr-x 2 tidb tidb 16384 Jul 24 16:58 1
-rw-r–r-- 1 tidb tidb 78 Jul 24 16:58 backup.lock
-rw-r–r-- 1 tidb tidb 376 Jul 24 16:58 backupmeta
-rw-r–r-- 1 tidb tidb 29570 Jul 24 16:58 backupmeta.datafile.000000001
-rw-r–r-- 1 tidb tidb 441203 Jul 24 16:58 backupmeta.schema.000000002
drwxrwxrwx 3 tidb tidb 20 Jul 24 16:58 checkpoints

还原操作命令
tiup br restore table
–pd “192.168.0.233:2379”
–db “mjj”
–table “sbtest2”
–storage “local:///tidb/br”
–ratelimit 128
–log-file /tmp/br-restore-$(date +%Y%m%d%H%M).log

[tidb@mgr-01 tidb]$ tiup cluster stop mjj-cluster -R tidb
Will stop the cluster mjj-cluster with nodes: , roles: tidb.
Do you want to continue? [y/N]:(default=N) y

  • [ Serial ] - SSHKeySet: privateKey=/home/tidb/.tiup/storage/cluster/clusters/mjj-cluster/ssh/id_rsa, publicKey=/home/tidb/.tiup/storage/cluster/clusters/mjj-cluster/ssh/id_rsa.pub
  • [Parallel] - UserSSH: user=tidb, host=192.168.0.233
  • [Parallel] - UserSSH: user=tidb, host=192.168.0.233
  • [Parallel] - UserSSH: user=tidb, host=192.168.0.233
  • [Parallel] - UserSSH: user=tidb, host=192.168.0.233
  • [Parallel] - UserSSH: user=tidb, host=192.168.0.233
  • [Parallel] - UserSSH: user=tidb, host=192.168.0.233
  • [ Serial ] - StopCluster
    Stopping component tidb
    Stopping instance 192.168.0.233
    Stop tidb 192.168.0.233:4000 success
    Stopping component node_exporter
    Stopping component blackbox_exporter
    Stopped cluster mjj-cluster successfully
    [tidb@mgr-01 tidb]$ tiup br restore table --pd “192.168.0.233:2379” --db “mjj” --table “sbtest2” --storage “local:///tidb/br” --ratelimit 128 --log-file /tmp/br-restore-$(date +%Y%m%d%H%M).log
    Starting component br: /home/tidb/.tiup/components/br/v8.5.7/br restore table --pd 192.168.0.233:2379 --db mjj --table sbtest2 --storage local:///tidb/br --ratelimit 128 --log-file /tmp/br-restore-202607271032.log
    Detail BR log in /tmp/br-restore-202607271032.log

[root@mgr-01 ~]# tail -f /tmp/br-restore-202607271032.log
[2026/07/27 10:32:06.248 +08:00] [INFO] [add_column.go:1318] [“Automatically convert BLOB(524288) to MEDIUMBLOB”] [category=ddl]
[2026/07/27 10:32:06.354 +08:00] [INFO] [executor.go:6858] [“DDL job submitted”] [category=ddl] [job=“ID:180, Type:create table, State:queueing, SchemaState:none, SchemaID:170, TableID:179, RowCount:0, ArgLen:1, start time: 2026-07-27 10:32:06.248 +0800 CST, Err:, ErrCount:0, SnapshotVersion:0, Version: v2”] [query=“\t\tCREATE TABLE __TiDB_BR_Temporary_Snapshot_Restore_Checkpoint_0.cpt_data (\n\t\t\tuuid binary(32) NOT NULL,\n\t\t\tsegment_id BIGINT NOT NULL,\n\t\t\tdata BLOB(524288) NOT NULL,\n\t\t\tupdate_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY(uuid, segment_id));”]
[2026/07/27 10:32:06.357 +08:00] [INFO] [job_submitter.go:139] [“add DDL jobs”] [category=ddl] [“batch count”=1] [jobs="ID:180, Type:create table, State:queueing, SchemaState:none, SchemaID:170, TableID:179, RowCount:0, ArgLen:1, start time: 2026-07-27 10:32:06.248 +0800 CST, Err:, ErrCount:0, SnapshotVersion:0, Version: v2; "] [table=true] [fast_create=true]
[2026/07/27 10:32:07.664 +08:00] [INFO] [pd.go:431] [“adaptive update ts interval state transition”] [configuredInterval=2s] [prevAdaptiveUpdateInterval=2s] [newAdaptiveUpdateInterval=2s] [requiredStaleness=0s] [prevState=unknown(0)] [newState=normal]
[2026/07/27 10:32:07.933 +08:00] [INFO] [info.go:1246] [SetTiFlashGroupConfig]
[2026/07/27 10:32:17.960 +08:00] [INFO] [owner_daemon.go:56] [“daemon became owner”] [id=701226e0-c25e-418b-87a1-f9592f187105] [daemon-id=LogBackup::Advancer]
[2026/07/27 10:32:17.961 +08:00] [INFO] [advancer.go:522] [“Subscription handler spawned.”] [category=“log backup subscription manager”]
[2026/07/27 10:32:17.961 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:32:29.961 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:32:41.959 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:32:53.959 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:33:05.958 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:33:17.962 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:33:29.958 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:33:41.959 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:33:53.960 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:34:05.959 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:34:17.958 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:34:29.958 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:34:41.959 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:34:53.958 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:35:05.961 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:35:17.959 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:35:29.959 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]
[2026/07/27 10:35:41.958 +08:00] [INFO] [advancer.go:674] [“No tasks yet, skipping advancing.”]

[tidb@mgr-01 tidb]$ tiup br validate decode --field “end-version” --storage “local:///tidb/br”
Checking updates for component br… Starting component br: /home/tidb/.tiup/components/br/v8.5.7/br validate decode --field end-version --storage local:///tidb/br
Detail BR log in /tmp/br.log.2026-07-27T14.05.22+0800
467896495509864450

可以用python写个备份和恢复脚本呀,很方便。

这个提示是info级别的日志信息,不算是报错。可以打开数据恢复的日志文件,看下有没有进度信息,成功的话会有如下关键词

不过有一点需要注意:br备份时最好使用NFS或者支持s3协议的存储,否则备份时文件存储在各个服务器上,使用restore恢复时,需要将各个服务器上的文件汇总到一起才是完整的备份文件

o tasks yet BR 在 backupmeta 里没找到任何需要恢复的 SST

继续耐心等待

该日志多表示 BR 还没拿到可推进的恢复任务,常见于备份路径/PD 地址不对、备份元数据与要恢复的库表不匹配,或权限/存储读不到。核对:backup 是否成功写完、–storage 路径一致、–db/–table 在备份内存在、PD 可访问。打开 BR debug 日志看 register 任务是否失败;local 存储要保证跑 BR 的节点都能读到同一份备份。