Module 02 TiDB 集群备份和恢复
本章节围绕数据备份\恢复、数据导出\导入、数据一致性校验 ,完整覆盖 TiDB 全量 / 增量、逻辑 / 物理备份、异构迁移、数据校验工具链,是生产环境数据容灾、迁移、故障恢复的必备知识。
一、模块整体框架
课程分为 5 节,形成完整闭环:
- Lesson07:备份恢复策略总览
- Lesson08:Dumpling 逻辑导出工具(全量 SQL/CSV 导出)
- Lesson09:TiDB Lightning 高速导入(海量数据入库)
- Lesson10:BR 分布式物理备份恢复(生产主流冷热备份)
- Lesson11:sync-diff-inspector 数据一致性校验(迁移 / 备份后核对数据)
二、Lesson07 备份恢复策略概述
1. 核心学习目标
区分热 / 温 / 冷备份、逻辑 / 物理 / 复制备份三类划分维度,掌握不同备份方案优缺点、适用场景,能够根据业务数据量、RTO/RPO 要求选择工具。
2. 备份按业务影响划分(热 / 温 / 冷)
表格
| 类型 | 执行特点 | 业务影响 | 适用场景 |
|---|---|---|---|
| 热备份 | 读写完全不中断, 依靠 MVCC 快照保证一致性 | 几乎无性能损耗,业务正常运行 | 7×24 高并发核心业务, BR、TiCDC 复制备份 |
| 温备份 | 允许读、禁止写, 不会锁表但会产生性能抖动 | 高峰期会出现延迟、QPS 下降 | Dumpling 逻辑导出, 低峰执行 |
| 冷备份 | 数据库完全停止读写,无业务压力 | 业务中断,备份窗口要求长 | 操作系统底层文件拷贝, 离线机房备份 |
3. 三大备份技术体系
- 逻辑备份 工具:Dumpling 原理:导出 SQL/CSV 文本,记录每行数据逻辑语句 优势:跨数据库兼容(MySQL ↔ TiDB)、粒度灵活(库 / 表过滤) 劣势:海量数据导出速度慢,占用连接资源
- 物理备份 工具:BR、操作系统文件拷贝 原理:直接复制 TiKV 底层 SST 数据文件,二进制副本 优势:速度极快,TB 级数据友好,支持增量备份 劣势:仅能恢复至 TiDB,无法跨异构数据库,版本、字符集强兼容限制
- 基于复制的备份 工具:TiCDC / Binlog 同步 原理:实时同步增量数据至备用集群,实现持续备份 优势:生产集群无备份压力,RPO 极低,可同时做灾备 + 数据同步 劣势:依赖同步链路,初期需要全量基线数据
4. 主流工具对比表
| 工具 | 冷热备份类型 | 备份类型 | 数据一致性 |
|---|---|---|---|
| BR | 热备份 | 物理备份 | 快照一致性 |
| Dumpling | 温 / 热备份 | 逻辑备份 | 快照一致性 |
| TiCDC 复制 | 热备份 | 逻辑增量备份 | 实时一致 |
| 操作系统文件拷贝 | 冷 / 温备份 | 物理备份 | 停机一致 |
三、Lesson08 Dumpling 逻辑导出工具
1. 工具定位
Dumpling 是 TiDB 官方配套的逻辑导出工具,用于从 TiDB/MySQL 导出 SQL/CSV 格式逻辑数据,适配异构数据库迁移、小体量全量备份场景,和 BR(物理备份工具)形成互补。
2. 基础信息
- 安装:
tiup install dumpling或者通过TiDB-community-boolkit安装包获取 - 最小权限:
SELECT、RELOAD、LOCK TABLES、REPLICATION CLIENT、PROCESS - 底层原理:通过 TiDB 快照读取数据,不锁表,依靠 MVCC 保证一致性。
3. 核心特性
- 支持 SQL、CSV 两种导出格式;
table-filter灵活过滤库、表,支持通配符筛选;- 支持直接导出至 Amazon S3云盘;
- 可配置并发线程、单文件大小限制、快照一致性级别。
4. 一致性与性能优化核心参数
4.1. 一致性参数 --consistency
| 参数值 | 原理说明 | 适用场景 |
|---|---|---|
| snapshot | 基于 TiDB MVCC 读取指定时间点快照数据,无锁、不阻塞业务写入 | TiDB 生产环境首选,线上业务不停机导出 |
| flush | 执行FLUSH TABLES WITH READ LOCK锁表,获取全局一致性快照 |
传统 MySQL 场景,TiDB 不推荐,会阻塞写入 |
| lock | 对导出表加 READ 锁保障一致性 | 线下静态库、无写入业务场景 |
| none | 不做一致性保障,导出过程新写入数据不会被捕获 | 仅临时抽样导出、对一致性无要求场景 |
| auto | 自动适配:TiDB 默认选用 snapshot,MySQL 默认选用 flush | 通用默认策略,无需手动指定 |
4.2. 并发性能调优参数
| 参数 | 作用详解 | 实操建议 |
|---|---|---|
-t |
指定导出线程数,提升库表并行导出并发 | 建议设置为集群 CPU 核心数 1/2,避免打满集群资源 |
-r |
单文件最大行数,开启表内分片并发,大表拆分多线程导出 | 大表场景配置 200000 左右,规避单线程导出大表瓶颈 |
-F |
限制单个导出文件体积(示例 256MiB),避免超大文件 | 适配下游导入工具单文件大小限制,便于分片分批导入 |
5. 适用场景
5.1. 推荐适用场景
- 数据量级<50GB:中小体量全量逻辑导出,工具调度、分片开销可控;
- 异构系统迁移需求:导出标准 SQL/CSV 文件,可直接导入 MySQL、PostgreSQL 等各类关系型数据库;
- 导出效率要求宽松:非极速备份场景,可接受数小时级导出耗时。
5.2. 不适用场景
- 需要导出 SST 原始文件:SST 属于 TiDB 底层物理文件,由 BR 工具负责导出,Dumpling 仅做逻辑解析导出;
- 增量备份诉求:Dumpling 仅支持全量一致性导出,无增量备份能力,增量场景搭配 TiCDC/binlog 同步;
- 数据量>50GB 且时效要求高:逻辑导出逐行解析、开销大,超大库极速备份优先选用 BR 物理备份。
6. 导出示例
-- 1 导出 SQL 格式文件
dumpling -u root -P 4000 -h 127.0.0.1 \
--filetype sql -t 8 -o /tmp/test \
-r 200000 -F 256MiB
-u/-P/-h:数据库账号、端口、连接地址;--filetype sql:导出后缀为.sql的 SQL 脚本文件;-t 8:启用 8 个导出并发线程;-o /tmp/test:导出文件存放目录;-r 200000:每个分片文件最多 20 万行数据;-F 256MiB:单个文件最大 256MB,超出自动拆分新文件。
-- 2 导出 CSV 格式文件
./dumpling -u root -P 4000 -h 127.0.0.1 \
-o /tmp/test --filetype csv
--3 精细化数据筛选导出
--where "id < 100"
--filter "employees.*" -B employees \
-T employees.WorkOrder
--filetype csv指定导出 CSV 文本格式,适配大数据分析工具、数仓离线导入场景。--where "id < 100":行级过滤,仅导出满足条件的数据;-B employees:指定仅导出employees库;-T employees.WorkOrder:精准指定仅导出单张表;--filter:更灵活的库表黑白名单过滤规则。
7、Dumpling 导出文件结构说明
导出目录会自动生成规范文件,核心文件如下:
metadata:导出元信息,包含快照时间点、导出参数、数据库版本,用于校验一致性;{schema}-schema-create.sql:对应数据库的建库语句;{schema}.{table}-schema.sql:单张表建表语句、索引、约束定义;{schema}.{table}.{序号}.sql/csv:分片业务数据文件,按行数 / 大小拆分。
四、Lesson09 TiDB Lightning 高速数据导入
1. 工具定位
配套 Dumpling 的导入工具,用于静态文件批量灌入 TiDB,支持 Dumpling 导出文件、CSV、Parquet,分为两种导入模式,适配不同业务需求。
2. 两种导入模式核心对比
| 对比项 | Physical Import(backend=local 物理导入) | Logical Import(backend=tidb 逻辑导入) |
|---|---|---|
| 写入方式 | 直接生成 SST 文件注入 TiKV 底层 | 解析 SQL INSERT,走 TiDB SQL 执行层 |
| 导入速度 | ~500GB / 小时,极速 | ~50GB / 小时,速度慢 |
| 资源消耗 | CPU、IO、网络占用极高 | 资源占用温和 |
| ACID 事务 | 不支持,导入期间集群不可读写 | 完整支持 ACID,业务正常访问 |
| 目标表 | 必须为空表 | 表可存在、支持追加写入 |
| 版本支持 | TiDB v4.0+ | 全版本兼容 |
3. 部署与前置要求
3.1. 硬件资源配置建议
| 运行模式 | 硬件最低规格 | 配套资源要求 |
|---|---|---|
| Physical 物理模式 | 32 核 CPU + 64GB 内存以上 | 独占本地高速 IO、万兆内网, 该模式直接生成 SST 文件导入 TiKV,资源消耗极高 |
| Logical 逻辑模式 | 4 核 CPU + 8GB 内存以上 | 资源消耗低,通过 SQL 语句写入 TiDB,适合中小体量导入场景 |
3.2. 必做前置检查项
- 集群状态:集群版本匹配、无宕机节点、Region 健康无异常副本、无调度任务积压;
- 权限与空间:导入账号拥有库表 DDL/DML 权限、TiKV 磁盘预留充足导入扩容空间;
- 业务预检:核查目标表为空表、大 CSV 源文件格式合规无脏数据、集群 Region 分布均衡避免热点;
3.3. 工具安装方式
- TiUP 一键安装:
tiup install lightning - 安装离线工具包:部署
TiDB-community-toolkit集成套件获取 Lightning 程序
4. 并行导入与数据过滤规则
4.1. 并行导入核心约束
- 并行导入仅支持空表,存量表并行导入会引发主键冲突、索引错乱;
- 超大体量导入优先选择 Physical 模式,导入速度可达 TB 级每小时;
- 硬性限制:Physical、Logical 两种模式禁止同时对同一集群执行导入任务,会造成 Region 元数据紊乱。
4.2. 数据过滤实现方式
- 命令行参数:使用
-f参数配置黑白名单过滤库表; - 配置文件:编写
mydumper.filter规则文件,灵活配置库表包含 / 排除规则,适配多库多表精细化筛选。
5. 断点续传核心能力
5.1. 断点配置释义
[checkpoint]
enable = true
# driver可选:file(本地文件存储断点) / mysql(独立库存储断点)
driver = "file"
- 开启后 Lightning 会实时记录每一张表、每一分片导入进度,任务异常崩溃、服务器重启后,重启任务自动从断点续导,完全规避重复导入、数据重复问题。
5.2. 断点管理运维命令
清理指定库表断点记录(重新全量导入场景使用):
tidb-lightning-ctl --checkpoint-remove="`schema`.`table`"
5.3. 配套辅助能力
- 内置 Web 可视化页面:支持在线查看任务进度、分片导入状态、失败分片详情、任务启停管理;
- 后台常驻启动命令:
nohup ./tidb-lightning -config tidb-lightning.toml > nohup.out &
后台运行任务,日志持久化留存,方便后续问题排查。
五、Lesson10 BR(Backup & Restore)分布式物理备份恢复
1. 工具定位
BR(Backup & Restore)是 TiDB 官方物理备份恢复工具,分布式物理热备份,直接复制 TiKV SST 文件,兼顾速度与在线业务无中断,支持全量 + 增量备份、对象存储(S3)、加密备份。
2. 核心原理
- 热备份:基于 PD 全局时间戳 TSO 创建一致性快照,备份期间集群正常读写;
- 物理备份:直接拷贝 TiKV 底层 SST 数据文件,无 SQL 解析开销,TB 级数据备份效率远超 Dumpling;
- 增量备份:基于上次备份 TSO,仅备份新增变更数据,大幅缩减备份窗口。
3. 备份输出文件
.sst:TiKV 原始数据文件,核心业务数据;backupmeta:备份元数据,记录快照时间、库表信息、版本;backup.lock:锁文件,防止同一目录并发写入备份。
4. 适用场景
- 大规模 TiDB 集群日常一致性备份;
- TB 级数据同架构迁移、机房灾备;
- 长期归档备份至 S3/GCS 对象存储;
- 增量备份缩短每日备份耗时。
5. 重要使用限制
5.1. 版本与配置强兼容约束
- GBK 字符集降级限制
无法将包含charset=GBK表的备份集恢复至 v5.4.0 之前旧集群,低版本 TiDB 原生对 GBK 支持不完善,恢复会出现字符错乱、元数据异常。
- 版本预检强制要求
备份 / 恢复前必须执行br check-requirements校验集群版本、组件兼容性,跨大版本恢复极易触发元数据不兼容报错。
-
两项全局参数必须前后一致
tidb_enable_clustered_index(聚簇索引开关):上下游集群配置不一致会导致主键存储结构不同,恢复后索引失效、查询报错;new_collations_enabled_on_first_bootstrap(新排序规则开关):集群初始化后固定不可变更,上下游不一致会引发字符串排序、唯一校验异常。
- 全局临时表兼容
v5.3.0 版本 BR 不会备份全局临时表,恢复后临时表结构与数据丢失,需业务侧自行重建临时表逻辑。
5.2. 数据同步与链路限制
BR 物理恢复生成的存量数据,无法被 TiCDC/TiDB Binlog 捕获同步至下游。
原因:BR 直接向 TiKV 写入 SST 物理文件,不会生成 binlog 变更日志,新增业务写入数据才可正常同步;历史存量数据需单独通过 Dumpling 同步下游。
5.3. 运维环境与任务约束
- 硬件基线要求 推荐部署在8 核 CPU、16GB 内存以上独立节点,BR 会并行拉取 / 推送分片数据,低配节点会造成任务卡顿、备份耗时翻倍。
-
执行窗口规范
- 备份:必须业务低峰执行,备份会扫描 Region、占用 TiKV IO / 网络资源,高峰执行会抬升业务读写延迟;
- 恢复:不建议直接在线生产集群执行恢复操作,恢复会大量 Ingest SST 文件抢占集群资源,极易引发业务抖动,优先在备用集群验证后再操作。
- 任务并行限制 禁止多个 BR 备份、恢复任务并行运行,多任务会争抢 PD 调度、TiKV 网络与 IO 资源,大概率出现任务失败、备份文件损坏问题。
5.4. 备份存储与校验机制
- 认自动校验** BR 在备份、恢复全流程结束后自动执行数据校验,核对备份文件完整性、分片数据一致性,异常会直接终止任务并告警。
- 备份存储选型推荐 优先使用兼容 S3/GCS/Azure Blob 协议的对象存储存放备份集,支持断点续传、多副本容灾、生命周期归档,远优于本地磁盘存储的可靠性。
6. BR 实操使用方式
6.1. 命令行基础备份 & 恢复示例
-- 全库备份
br backup full \
--pd "${PDIP}:2379" \
--storage "s3://backup-data/2022-01-30/" \
--ratelimit 128 \
--log-file backupfull.log
| 参数 | 作用说明 |
|---|---|
backup full |
执行集群全量物理备份 |
--pd |
指定集群 PD 地址,用于获取集群拓扑与 Region 信息 |
--storage |
备份集存储路径,示例为 S3 对象存储路径,支持本地路径、兼容协议对象存储 |
--ratelimit 128 |
限速 128MiB/s,避免备份流量打满集群内网带宽 |
--log-file |
持久化任务日志,便于后续故障排查、审计回溯 |
-- 全库恢复
br restore full \
--pd "${PDIP}:2379" \
--storage "s3://backup-data/2022-01-30/"
restore full读取指定路径备份集,自动匹配 Region 范围、Ingest SST 文件完成全集群数据恢复。
6.2. SQL 交互式用法
支持直接在 TiDB 客户端执行标准 SQL 语句完成备份恢复:
- 备份语句:
BACKUP DATABASE * TO 's3://xxx/backup'; - 恢复语句:
RESTORE DATABASE * FROM 's3://xxx/backup';适合 DBA 日常快速运维操作,无需登录服务器执行二进制命令。
6.3. 任务进度查看
通过 TiDB 内置 SQL 实时查看备份、恢复任务运行状态:
-- 查看备份任务列表与进度
SHOW BACKUPS;
-- 查看恢复任务列表与进度
SHOW RESTORES;
可查看任务 ID、起止时间、完成分片比例、任务状态、报错详情等信息。
六、Lesson11 sync-diff-inspector 数据一致性校验工具
1. 工具定位
TiDB 官方数据核对工具,用于备份恢复后、数据迁移后、主从同步后校验两端数据完全一致,自动生成修复 SQL,解决数据漂移、丢失问题。
2. 核心功能
-
结构 + 数据双重校验
-
同时比对上下游库表字段、索引、约束等表结构,以及全量业务数据内容,覆盖迁移完整性校验场景。
-
自动生成修复 SQL
-
识别数据差异后输出标准化修复语句,可直接执行补齐缺失数据、删除冗余数据,降低人工核对成本。
-
灵活映射适配异构名称
-
支持上下游库名、表名不一致场景配置映射规则校验,适配分库分表合并到 TiDB、业务库改名迁移场景。
-
分库分表专属校验能力
-
适配上游 MySQL 分库分表、下游合并单表的主流迁移架构,可批量核对分片数据完整性。
-
TiDB 集群间校验
-
支持 TiDB 主从集群、同城多活集群之间的数据一致性对账,用于容灾演练后数据核验。
-
对接 DM 配置一键校验
-
可直接读取 TiDB DM 任务配置文件,自动提取上下游连接、库表过滤规则,无需重复编写连接配置。
3. 底层校验原理
3.1. 分块校验提速逻辑
- 以主键 / 唯一索引为分片依据,将整张表拆分为多个 Chunk 数据块;
- 先对每个 Chunk 计算 Checksum 校验和,快速筛选出校验和不一致的异常 Chunk;
- 仅针对异常 Chunk 逐行逐条比对明细数据,大幅减少全表逐行比对带来的性能开销。
3.2. 差异修复 SQL 生成规则
- 下游缺失源端数据:自动生成
REPLACE INTO语句补齐缺失行; - 下游多余源端不存在数据:自动生成
DELETE语句清理冗余脏数据; 生成的 SQL 可落地执行,完成上下游数据对齐。
4. 权限要求与硬性使用限制
4.1. 两端账号最小权限要求
源端、目标端数据库账号必须具备权限: SELECT(查询数据)、SHOW DATABASES(查看库列表)、RELOAD(刷新表元数据)。
4.2. 数据类型兼容性限制
| 限制项 | 具体说明 |
|---|---|
| 不支持字段类型 | JSON、BIT、BINARY、BLOB、TEXT 大二进制类字段,无法完成精准校验 |
| 浮点型跨库校验失效 | FLOAT、DOUBLE 在 MySQL 与 TiDB 之间因浮点精度存储差异,校验结果不可信 |
| 无主键 / 唯一索引 | 可以完成基础校验,但工具无法精准定位单行数据,生成的修复 SQL 大概率错误 |
4.3. 运行模式约束
MySQL ↔ TiDB、MySQL ↔ MySQL 场景不支持在线实时校验,校验会扫描全表数据,建议业务低峰离线执行,避免影响在线业务性能。