导读

BR 接收备份命令 br backup full。获得备份快照点和备份存储地址。
BR 调度备份数据。具体步骤包括:1 暂停 GC,防止被备份数据被 GC 回收;2 访问 PD 获取被备份数据的 Region 分布信息及 TiKV 节点信息;3 创建备份请求发送给 TiKV 节点,包含 backup ts、备份的 region、备份存储地址。
TiKV 接受备份请求并初始化 backup worker。
TiKV 备份数据。具体步骤包括:1 读取数据,由 backup worker 从 Region Leader 读 backup ts 对应数据;2 保存到 SST 文件,存储在内存中;3 上传 SST 文件到备份存储。
BR 从各个 TiKV 获取备份结果。如果 Region 变动会重试,如果不可重试则备份失败。
BR 备份元信息。备份 table schema,计算 table data checksum,生成 backup metadata,并上传到备份存储。
[tidb@tidb53 ~]$ tiup br backup full --pd "172.20.12.52:2679" --storage "local:///data1/backups" --ratelimit 128 --log-file backupfull.log
tiup is checking updates for component br ...
Starting component `br`: /home/tidb/.tiup/components/br/v7.6.0/br backup full --pd 172.20.12.52:2679 --storage local:///data1/backups --ratelimit 128 --log-file backupfull.log
Detail BR log in backupfull.log
[2024/03/05 10:19:27.437 +08:00] [WARN] [backup.go:311] ["setting `--ratelimit` and `--concurrency` at the same time, ignoring `--concurrency`: `--ratelimit` forces sequential (i.e. concurrency = 1) backup"] [ratelimit=134.2MB/s] [concurrency-specified=4]
Full Backup <----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
Checksum <-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
[2024/03/05 10:20:29.456 +08:00] [INFO] [collector.go:77] ["Full Backup success summary"] [total-ranges=207] [ranges-succeed=207] [ranges-failed=0] [backup-checksum=1.422780807s] [backup-fast-checksum=17.004817ms] [backup-total-ranges=161] [total-take=1m2.023929601s] [BackupTS=448162737288380420] [total-kv=25879266] [total-kv-size=3.587GB] [average-speed=57.82MB/s] [backup-data-size(after-compressed)=1.868GB] [Size=1867508767]
[tidb@tidb53 ~]$ ll /data1/backups/
总用量 468
drwxr-xr-x. 2 nfsnobody nfsnobody 20480 3月 5 10:20 1
drwxr-xr-x. 2 tidb tidb 12288 3月 5 10:20 4
drwxr-xr-x. 2 nfsnobody nfsnobody 12288 3月 5 10:20 5
-rw-r--r--. 1 nfsnobody nfsnobody 78 3月 5 10:19 backup.lock
-rw-r--r--. 1 nfsnobody nfsnobody 395 3月 5 10:20 backupmeta
-rw-r--r--. 1 nfsnobody nfsnobody 50848 3月 5 10:20 backupmeta.datafile.000000001
-rw-r--r--. 1 nfsnobody nfsnobody 365393 3月 5 10:20 backupmeta.schema.000000002
drwxrwxrwx. 3 nfsnobody nfsnobody 4096 3月 5 10:19 checkpoints复制
[tidb@tidb53 ~]$ tiup br validate decode --field="end-version" --storage "local:///data1/backups" | tail -n1
tiup is checking updates for component br ...
Starting component `br`: /home/tidb/.tiup/components/br/v7.6.0/br validate decode --field=end-version --storage local:///data1/backups
Detail BR log in /tmp/br.log.2024-03-05T10.24.25+0800
448162737288380420
mysql> select tidb_parse_tso(448162737288380420);
+------------------------------------+
| tidb_parse_tso(448162737288380420) |
+------------------------------------+
| 2024-03-05 10:19:28.489000 |
+------------------------------------+
1 row in set (0.01 sec)复制

BR 接收备份命令br log start。解析获取日志备份任务的 checkpoint ts、备份存储地址,在 PD 注册日志备份任务。
TiKV 监控日志备份任务的创建与更新。每个 TiKV 节点的log backup observer监听 PD 中日志备份任务的创建与更新,并备份该节点上在备份范围内的数据。
TiKV log backup observer 持续备份 KV 变更日志。具体步骤包括:1 读取 KV 数据变更保存到自定义格式备份文件;2 定期从 PD 查询 global checkpoint ts;3 定期生成 local metadata;定期将日志备份数据和 local metadata 上传到备份存储;4 请求 PD 阻止未备份数据被 GC 回收。
TiDB Coordinator 监控日志备份进度。轮询所有 TiKV 节点获取各个 Region 备份进度,根据 Region checkpoint ts 计算整个日志备份任务的进度并上传给 PD。
PD 持久化日志备份任务状态。通过 br log status 查询。
[tidb@tidb53 ~]$ tiup br validate decode --field="end-version" --storage "local:///data1/backups" | tail -n1
tiup is checking updates for component br ...
Starting component `br`: /home/tidb/.tiup/components/br/v7.6.0/br validate decode --field=end-version --storage local:///data1/backups
Detail BR log in /tmp/br.log.2024-03-05T10.24.25+0800
448162737288380420
mysql> select tidb_parse_tso(448162737288380420);
+------------------------------------+
| tidb_parse_tso(448162737288380420) |
+------------------------------------+
| 2024-03-05 10:19:28.489000 |
+------------------------------------+
1 row in set (0.01 sec)复制
[tidb@tidb53 ~]$ tiup br log status --task-name=pitr --pd "172.20.12.52:2679"
tiup is checking updates for component br ...
Starting component `br`: /home/tidb/.tiup/components/br/v7.6.0/br log status --task-name=pitr --pd 172.20.12.52:2679
Detail BR log in /tmp/br.log.2024-03-05T10.56.28+0800
● Total 1 Tasks.
> #1 <
name: pitr
status: ● NORMAL
start: 2024-03-05 10:50:52.939 +0800
end: 2090-11-18 22:07:45.624 +0800
storage: local:///data1/backups/pitr
speed(est.): 0.00 ops/s
checkpoint[global]: 2024-03-05 10:55:42.69 +0800; gap=47s
[tidb@tidb53 ~]$ tiup br log status --task-name=pitr --pd "172.20.12.52:2679"
tiup is checking updates for component br ...
Starting component `br`: /home/tidb/.tiup/components/br/v7.6.0/br log status --task-name=pitr --pd 172.20.12.52:2679
Detail BR log in /tmp/br.log.2024-03-05T10.58.57+0800
● Total 1 Tasks.
> #1 <
name: pitr
status: ● NORMAL
start: 2024-03-05 10:50:52.939 +0800
end: 2090-11-18 22:07:45.624 +0800
storage: local:///data1/backups/pitr
speed(est.): 0.00 ops/s
checkpoint[global]: 2024-03-05 10:58:07.74 +0800; gap=51s复制
dumpling -u root -P 4000 -h 127.0.0.1 --filetype sql -t 8 -o /tmp/test -r 200000 -F256MiB
复制
BR 接收恢复命令 br restore。获得快照备份存储地址、要恢复的对象,同时检查要恢复的对象是否存在及是否符合要求。
BR 调度恢复数据。具体步骤包括:请求 PD 关闭自动 Region 调度、读取并恢复备份数据的 schema、基于备份数据信息请求 PD 分配 Region 并将 Region 分布到 TiKV、根据 PD 分配的 Region 结果发送恢复请求到 TiKV。
TikV 接受恢复请求并初始化 restore worker。
TiKV 恢复数据。具体步骤包括:从备份存储下载数据到本地、restore worker 对备份数据 kv 进行重写(替换 table id 及 index id)、将处理好的 SST 文件注入到 RocksDB、返回恢复结果给 BR。
BR 从各 TiKV 获取恢复结果。
[tidb@tidb53 ~]$ tiup br restore full --pd "172.20.12.52:2679" --storage "local:///data1/backups"
tiup is checking updates for component br ...
Starting component `br`: /home/tidb/.tiup/components/br/v7.6.0/br restore full --pd 172.20.12.52:2679 --storage local:///data1/backups
Detail BR log in /tmp/br.log.2024-03-05T13.08.08+0800
Full Restore <---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
[2024/03/05 13:08:27.918 +08:00] [INFO] [collector.go:77] ["Full Restore success summary"] [total-ranges=197] [ranges-succeed=197] [ranges-failed=0] [split-region=786.659µs] [restore-ranges=160] [total-take=19.347776543s] [RestoreTS=448165390238351361] [total-kv=25811349] [total-kv-size=3.561GB] [average-speed=184MB/s] [restore-data-size(after-compressed)=1.847GB] [Size=1846609490] [BackupTS=448162737288380420]复制
[tidb@tidb53 ~]$ tiup br restore point --pd "172.20.12.52:2679" --full-backup-storage "local:///data1/backups/fullbk" --storage "local:///data1/backups/pitr" --restored-ts "2024-03-05 13:38:28+0800"
tiup is checking updates for component br ...
Starting component `br`: /home/tidb/.tiup/components/br/v7.6.0/br restore point --pd 172.20.12.52:2679 --full-backup-storage local:///data1/backups/fullbk --storage local:///data1/backups/pitr --restored-ts 2024-03-05 13:38:28+0800
Detail BR log in /tmp/br.log.2024-03-05T13.45.02+0800
Full Restore <---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
[2024/03/05 13:45:24.620 +08:00] [INFO] [collector.go:77] ["Full Restore success summary"] [total-ranges=111] [ranges-succeed=111] [ranges-failed=0] [split-region=644.837µs] [restore-ranges=75] [total-take=21.653726346s] [BackupTS=448165866711285765] [RestoreTS=448165971332694017] [total-kv=25811349] [total-kv-size=3.561GB] [average-speed=164.4MB/s] [restore-data-size(after-compressed)=1.846GB] [Size=1846489912]
Restore Meta Files <......................................................................................................................................................................................> 100%
Restore KV Files <........................................................................................................................................................................................> 100%
[2024/03/05 13:45:26.944 +08:00] [INFO] [collector.go:77] ["restore log success summary"] [total-take=2.323796546s] [restore-from=448165866711285765] [restore-to=448165867159552000] [restore-from="2024-03-05 13:38:26.29 +0800"] [restore-to="2024-03-05 13:38:28 +0800"] [total-kv-count=0] [skipped-kv-count-by-checkpoint=0] [total-size=0B] [skipped-size-by-checkpoint=0B] [average-speed=0B/s]复制
/ 阅读推荐 /

💡 点击文末【阅读原文】,立即下载试用 TiDB!
