备份与恢复
这里我们假定 TiDB 服务信息如下:
在这个备份恢复过程中,我们会用到下面的工具:
- mydumper 从 TiDB 导出数据
- loader 导入数据到 TiDB
mydumper
是一个强大的数据备份工具,具体可以参考 https://github.com/maxbube/mydumper。
可使用 从 TiDB 导出数据进行备份,然后用 loader
将其导入到 TiDB 里面进行恢复。
为了快速的备份恢复数据 (特别是数据量巨大的库), 可以参考以下建议:
- 使用 mydumper 导出来的数据文件尽可能的小, 最好不要超过 64M, 可以设置参数 -F 64
- loader的
-t
参数可以根据 tikv 的实例个数以及负载进行评估调整,例如 3个 tikv 的场景, 此值可以设为3 *(1 ~ n)
;当 tikv 负载过高,loader 以及 tidb 日志中出现大量backoffer.maxSleep 15000ms is exceeded
可以适当调小该值,当 tikv 负载不是太高的时候,可以适当调大该值。
数据恢复示例及相关的配置:
- 集群拓扑
- TIKV * 12
- TIDB * 4
- PD * 3
结果:导入时间 11 小时左右,19.4 G/小时
上面,我们使用 -B test
表明是对 test
这个 database 操作,然后用 -T t1,t2
表明只导出 t1
,t2
两张表。
-t 16
表明使用 16 个线程去导出数据。-F 64
是将实际的 table 切分成多大的 chunk,这里就是 64MB 一个 chunk。
--skip-tz-utc
添加这个参数忽略掉 TiDB 与导数据的机器之间时区设置不一致的情况,禁止自动转换。
我们使用 将之前导出的数据导入到 TiDB,完成恢复操作。Loader 的下载和具体的使用方法见