【TiDB原理与实战详解】5、BR 物理备份恢复与Binlog 数据同步~学不会? 不存在的!

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: BR(Backup & Restore)是 TiDB 分布式备份恢复的命令行工具,适用于大数据量场景,支持常规备份恢复及大规模数据迁移。BR 通过向各 TiKV 节点下发命令执行备份或恢复操作,生成 SST 文件存储数据信息与 `backupmeta` 文件存储元信息。推荐部署配置包括在 PD 节点部署 BR 工具,使用万兆网卡等。本文介绍 BR 的工作原理、部署配置、使用限制及多种备份恢复方式,如全量备份、单库/单表备份、过滤备份及增量备份等。

BR 物理备份恢复

BR 全称为 Backup & Restore,是 TiDB 分布式备份恢复的命令行工具,用于对 TiDB 集群进行数据备份和恢复。

相比 dumpling,BR 更适合大数据量的场景。

BR 除了可以用来进行常规备份恢复外,也可以在保证兼容性前提下用来做大规模的数据迁移。

本文介绍了 BR 的工作原理、推荐部署配置、使用限制以及几种使用方式。

1、工作原理

BR 将备份或恢复操作命令下发到各个 TiKV 节点。TiKV 收到命令后执行相应的备份或恢复操作。

在一次备份或恢复中,各个 TiKV 节点都会有一个对应的备份路径,TiKV 备份时产生的备份文件将会保存在该路径下,恢复时也会从该路径读取相应的备份文件。

image.png

2、备份文件类型

备份路径下会生成以下两种类型文件:

  • SST 文件:存储 TiKV 备份下来的数据信息
  • backupmeta 文件:存储本次备份的元信息,包括备份文件数、备份文件的 Key 区间、备份文件大小和备份文件 Hash (sha256) 值
  • backup.lock 文件:用于防止多次备份到同一目录

SST 文件命名格式

SST 文件以 storeID_regionID_regionEpoch_keyHash_cf 的格式命名。格式名的解释如下:

  • storeID:TiKV 节点编号
  • regionID:Region 编号
  • regionEpoch:Region 版本号
  • keyHash:Range startKey 的 Hash (sha256) 值,确保唯一性
  • cf:RocksDB 的 ColumnFamily(默认为 defaultwrite**

3、部署BR工具

推荐部署配置

将BR工具部署在PD节点,然后在tikv节点挂载远程目录,使用万兆网卡,减少带宽瓶颈。

恢复数据时需要关闭TiCDC同步。

使用BR 5.3.0以上版本

备份和恢复 mysql 系统库下的表数据(实验特性)

备份系统表但是不能完全恢复到系统表中

BR最低配置

CPU 内存 硬盘类型 网络
1 核 4 GB HDD 千兆网卡

一般场景下(备份恢复的表少于 1000 张),BR 在运行期间的 CPU 消耗不会超过 200%,内存消耗不会超过 4 GB。但在备份和恢复大量数据表时,BR 的内存消耗可能会上升到 4 GB 以上。在实际测试中,备份 24000 张表大概需要消耗 2.7 GB 内存,CPU 消耗维持在 100% 以下。

pd节点 下载BR工具

wget https://download.pingcap.org/tidb-toolkit-v5.3.0-linux-amd64.tar.gz
tar  xf tidb-toolkit-v5.3.0-linux-amd64.tar.gz
cd /root/tidb-toolkit-v5.3.0-linux-amd64/bin

命令和子命令

BR 由多层命令组成。目前,BR 包含 `backup`、`restore` 和 `version` 三个子命令:

br backup  用于备份 TiDB 集群
br restore 用于恢复 TiDB 集群

以上三个子命令可能还包含这些子命令:

full: 可用于备份或恢复全部数据。
db:   可用于备份或恢复集群中的指定数据库。
table:可用于备份或恢复集群指定数据库中的单张表。

常用选项

--pd:  用于连接的选项,表示 PD 服务地址,例如 "${PDIP}:2379"。
-h/--help: 获取所有命令和子命令的使用帮助。例如 br backup --help。
-V(或 --version): 检查 BR 版本。
--ca:  指定 PEM 格式的受信任 CA 的证书文件路径。
--cert:指定 PEM 格式的 SSL 证书文件路径。
--key: 指定 PEM 格式的 SSL 证书密钥文件路径。
--status-addr:BR 向 Prometheus 提供统计数据的监听地址。
--ratelimit:线程数,越大速度越快,但是对生产环境影响越大。

4、全量备份恢复

备份

# 创建备份路径
mkdir  -p /data01/backup/
# 授权备份路径
chown -R tidb:tidb  /data01/backup
# 开始备份
/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br backup full \
    --pd "10.10.8.107:2379" \
    --storage "local:///data01/backup" \
    --ratelimit 128 \  # 线程数
    --log-file backupfull.log

恢复

/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br restore full \
    --pd "10.10.8.107:2379" \
    --storage "local:///data01/backup" \
    --ratelimit 128 \
    --log-file restorefull.log

5、单库备份恢复

备份

# 创建备份路径
mkdir  -p /data01/backup/a
# 授权备份路径
chown -R tidb:tidb  /data01/backup/a
# 开始备份    
/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br backup db \
    --pd "10.10.8.107:2379" \
    --db a \
    --storage "local:///data01/backup/a" \
    --ratelimit 128 \
    --log-file backuptable.log

恢复

/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br restore db \
    --pd "10.10.8.107:2379" \
    --db "a" \
    --ratelimit 128 \
    --storage "local:///data01/backup/a" \
    --log-file restorefull.log

6、单表备份恢复

备份

# 创建备份路径
mkdir  -p /data01/backup/a/t1
# 授权备份路径
chown -R tidb:tidb  /data01/backup/a/t1
# 开始备份  
/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br backup table \
    --pd "10.10.8.107:2379" \
    --db a \
    --table t1 \
    --storage "local:///data01/backup/a/t1" \
    --ratelimit 128 \
    --log-file backuptable.log

恢复

/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br  restore table \
    --pd "10.10.8.107:2379" \
    --db  "a" \
    --table "t1" \
    --ratelimit 128 \
    --storage "local:///data01/backup/a/t1" \
    --log-file restorefull.log

7、过滤备份恢复

正则过滤库表恢复

/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br restore full \
    --pd "10.10.8.107:2379" \
    --filter 'a*.t*' \
    --storage "local:///data01/backup/a" \
    --log-file restorefull.log

指定过滤库表恢复 --filter指定多个表

/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br restore full \
    --pd "10.10.8.107:2379" \
    --filter 'a.t1' \
    --filter 'a.t2' \  
    --storage "local:///data01/backup/a" \
    --log-file restorefull.log

8、增量备份恢复

可以进行做一个全量备份,多个增量备份。

如果需要多次增量备份需要调整tikv_gc_life_time参数,调整后需要先进行全备在进行增备,因为在你修改参数之前tikv可能已经GC过了,这会清理掉之前的数据版本信息,导致备份失败

修改tikv_gc_life_time参数默认时间(当你将tikv_gc_life_time参数修改为24小时后,如果你超过24小时没有进行增量备份将需要重新进行全量备份)

UPDATE mysql.tidb SET VARIABLE_VALUE = '24h' WHERE VARIABLE_NAME = 'tikv_gc_life_time';

先进行全量备份

# 创建备份路径
mkdir  -p /data01/backup/all
# 授权备份路径
chown -R tidb:tidb  /data01/backup/all
# 开始备份
/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br backup full \
    --pd "10.10.8.107:2379" \
    --storage "local:///data01/backup/all" \
    --ratelimit 128 \
    --log-file backupfull.log

获取时间戳

/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br  validate decode --field="end-version" -s "local:///data01/backup/all" | tail -n1

Detail BR log in /tmp/br.log.2022-02-14T12.03.02+0800 
431177486559608836  # 就是这个

指定时间戳进行增量备份

# 创建备份路径
mkdir  -p /data01/backup/inc0
# 授权备份路径
chown -R tidb:tidb  /data01/backup/inc0

/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br backup full\
    --pd 10.10.8.107:2379 \
    --ratelimit 128 \
    -s "local:///data01/backup/inc0" \
    --lastbackupts 431177486559608836

必须按照备份的顺序进行增量的恢复

先指定全量备份路径进行恢复

/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br restore full \
    --pd "10.10.8.107:2379" \
    --storage "local:///data01/backup/all" \
    --ratelimit 128 \
    --log-file restorefull.log

在指定增量备份路径进行恢复

/root/tidb-toolkit-v5.3.0-linux-amd64/bin/br restore full \
    --pd "10.10.8.107:2379" \
    --storage "local:///data01/backup/inc0" \
    --ratelimit 128 \
    --log-file restorefull.log

TiDB Binlog 数据同步工具

TiDB Binlog 是一个用于收集 TiDB 的 binlog,并提供准实时备份和同步功能的商业工具。

  • 数据同步:同步 TiDB 集群数据到其他数据库
  • 实时备份和恢复:备份 TiDB 集群数据,同时可以用于 TiDB 集群故障时恢复

image.png

1、tiup安装binlogctl工具

tiup ctl:v5.2.0 binlog

2、配置

查看是否开启binlog

show variables like "log_bin";# 0 代表关闭,1 代表开启

开启binlog

# 编辑配置文件
tiup cluster edit-config test

# server_configs标签添加如下内容
server_configs:
  tidb:
    log.slow-threshold: 300
    binlog.enable: true
    binlog.ignore-error: true

重载配置

# 查看集群节点信息
tiup  cluster display test

# 重载tidb节点
tiup cluster reload test -N 10.10.8.107:4000

查看是否开启binlog

show variables like "log_bin";# 0 代表关闭,1 代表开启
相关文章
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
1721 4
|
缓存 前端开发 安全
数据同步原理
数据同步原理
307 10
数据同步原理
|
SQL 存储 关系型数据库
美团面试:binlog、redo log、undo log的底层原理是什么?它们分别实现ACID的哪个特性?
老架构师尼恩在其读者交流群中分享了关于 MySQL 中 redo log、undo log 和 binlog 的面试题及其答案。这些问题涵盖了事务的 ACID 特性、日志的一致性问题、SQL 语句的执行流程等。尼恩详细解释了这些日志的作用、所在架构层级、日志形式、缓存机制以及写文件方式等内容。他还提供了多个面试题的详细解答,帮助读者系统化地掌握这些知识点,提升面试表现。此外,尼恩还推荐了《尼恩Java面试宝典PDF》和其他技术圣经系列PDF,帮助读者进一步巩固知识,实现“offer自由”。
美团面试:binlog、redo log、undo log的底层原理是什么?它们分别实现ACID的哪个特性?
|
存储 关系型数据库 MySQL
binlog、redolog、undo log底层原理及ACID特性实现分享
在数据库管理系统中,日志机制是确保数据一致性、完整性和可靠性的关键组件。MySQL数据库中的binlog、redolog和undolog作为其核心日志系统,各自扮演着不同但同样重要的角色。本文将深入探讨这三种日志的底层原理以及它们如何分别实现ACID(原子性、一致性、隔离性、持久性)特性的不同方面。
305 0
|
关系型数据库 MySQL 调度
【TiDB原理与实战详解】4、DM 迁移和TiCDC数据同步~学不会? 不存在的!
TiDB Data Migration (DM) 和 TiCDC 是两款用于数据库迁移和同步的强大工具。DM 支持将兼容 MySQL 协议的数据库(如 MySQL、MariaDB)的数据异步迁移到 TiDB 中,具备全量和增量数据传输能力,并能合并分库分表的数据。TiCDC 则专注于 TiDB 的增量同步,利用 TiKV 日志实现高可用性和水平扩展,支持多种下游系统和输出格式。两者均可通过 TiUP 工具进行部署与管理,简化了集群的安装、配置及任务管理过程。
|
2月前
|
SQL 运维 关系型数据库
深入探讨MySQL的二进制日志(binlog)选项
总结而言,对MySQL binlogs深度理解并妥善配置对数据库运维管理至关重要;它不仅关系到系统性能优化也是实现高可靠性架构设计必须考虑因素之一。通过精心规划与周密部署可以使得该机能充分发挥作用而避免潜在风险带来影响。
97 6
|
3月前
|
存储 SQL 关系型数据库
MySQL中binlog、redolog与undolog的不同之处解析
每个都扮演回答回溯与错误修正机构角色: BinLog像历史记载员详细记载每件大大小小事件; RedoLog则像紧急救援队伍遇见突發情況追踪最后活动轨迹尽力补救; UndoLog就类似时间机器可倒带历史让一切归位原始样貌同时兼具平行宇宙观察能让多人同时看见各自期望看见历程而互不干扰.
198 9
|
4月前
|
存储 SQL 关系型数据库
MySQL的Redo Log与Binlog机制对照分析
通过合理的配置和细致的管理,这两种日志机制相互配合,能够有效地提升MySQL数据库的可靠性和稳定性。
164 10
|
6月前
|
SQL 监控 关系型数据库
MySQL日志分析:binlog、redolog、undolog三大日志的深度探讨。
数据库管理其实和写小说一样,需要规划,需要修订,也需要有能力回滚。理解这些日志的作用与优化,就像把握写作工具的使用与运用,为我们的数据库保驾护航。
269 23
|
11月前
|
存储 SQL 关系型数据库
mysql 的ReLog和BinLog区别
MySQL中的重做日志和二进制日志是确保数据库稳定性和可靠性的关键组件。重做日志主要用于事务的持久性和原子性,通过记录数据页的物理修改信息来恢复未提交的事务;而二进制日志记录SQL语句的逻辑变化,支持数据复制、恢复和审计。两者在写入时机、存储方式及配置参数等方面存在显著差异。
220 6