BR原理
备份:
BR将备份命令发送到各个TiKV节点,并为每个节点指定一个外部存储/或者本地存储
各TiKV节点会将备份文件保存到指定路径
恢复:
BR将恢复命令发送到各个TiKV节点,各TiKV节点从已有的路径中取出数据,恢复到本节点;
- TiDB有MVCC机制,可以保证数据的一致性;备份的数据是开始时间戳的数据镜像;
- 备份和恢复均使用的Leader节点
BR适用场景
- 热备,可以在数据库运行期间进行备份和恢复;
- 物理备份
- 大数据量
- 速度较快
- SST文件
- 只能恢复到TiDB数据库
BR使用限制
- BR恢复到TiCDC/Drainer的上游集群时,恢复数据无法由TiCDC/Drainer 同步到下游;
- 备份和恢复集群必须采用相同的排序规则--new_collations_enabled_on_first_bootstrap
- 版本兼容(使用-check-requirements=false强行跳过版本检查)
- 某些功能在开启或者关闭状态下,会导致KV格式发生变化;
BR备份恢复
全库备份
br backup full -h //查看帮助
br backup full \
--pd "ip:2379" //任选一个PD
--restore "local:///tmp/backup" //存储路径
--ratelimit 120 //速度限制MB/s
--log-file backupfull.log //备份日志
全库恢复
br restore full
--pd "ip:2379"
--storage "local:///tmp/backup"
--ratelimit 128
--log-file resotrefull.log
单库备份
br backup db
--pd "ip:2379"
--db test
--storage "local:///tmp/backup"
--ratelimit 120
--log-file backupdb.log
单库恢复
br restore db
--pd "ip:2379"
--db test
--storage "local:///tmp/backup"
--ratelimit 120
--log-file backupdb.log
单表备份
br backup table
--pd "ip:2379"
--db test
--table usertab
--storage "local:///tmp/backup"
--ratelimit 120
--log-file backupdb.log
单表恢复
br restore table
--pd "ip:2379"
--db test
--table usertab
--storage "local:///tmp/backup"
--ratelimit 120
--log-file backupdb.log
如果需要从全备中有选择地恢复部分库表
br restore full
--pd "ip:2379"
--filter 'db*.tb*'
--storage "local:///tmp/backup"
--ratelimit 128
--log-file resotrefull.log
增量备份
br backup full
--pd "ip:2379"
-s local:///home/tidb/backdata/incr
--lastbackupts ${LAST_BACKUP_TS} //上次备份的时间戳
// 获取上次备份时间戳
LAST_BACKUP_TS = `br validate decode --field="end-version" -s local:///home/tidb/backupdata | tail -n1`
限制:
增量备份和全备的位置要不同;
gc save point一定要在上次备份时间戳LAST_BACKUP_TS之前,如果上次的数据被垃圾回收清理了,则无法备份;
增量恢复
方法同全量恢复, 需要注意恢复增量数据的时候,要保证备份时指定的last backup ts之前的备份数据已经全部恢复到目标集群;
具体操作见:BR备份测试_一条大河-CSDN博客
硬件要求: cpu/memory >= 1c/4G
BR工具最佳实践
- 业务低峰时执行备份操作
- 恢复期间对在线业务影响很大,建议低峰或者限速恢复;
- BR备份和恢复最好串行
- 推荐挂在共享存储-s,推荐使用高吞吐的硬件存储;