使用 Mydumper/TiDB Lightning 进行备份与恢复
这里假定 TiDB 服务器信息如下:
在这个备份恢复过程中,会用到下面的工具:
- Mydumper 从 TiDB 导出数据
是一个强大的数据备份工具,具体可以参考 。
可使用 Mydumper 从 TiDB 导出数据进行备份,然后用 将其导入到 TiDB 里面进行恢复。
为了快速地备份恢复数据 (特别是数据量巨大的库),可以参考以下建议:
- 导出来的数据文件应当尽可能的小,可以通过设置参数
-F
来控制导出来的文件大小。如果后续使用 TiDB Lightning 对备份文件进行恢复,建议把mydumper
-F 参数的值设置为256
(单位 MB);如果使用loader
恢复,则建议设置为64
(单位 MB)。
我们使用 从 TiDB 备份数据,如下:
上面,我们使用 -B test
表明是对 test
这个 database 操作,然后用 -T t1,t2
表明只导出 t1
,t2
两张表。
添加 --skip-tz-utc
参数后,会忽略掉 TiDB 与导数据的机器之间时区设置不一致的情况,禁止自动转换。
如果 出现以下报错:
** (mydumper:27528): CRITICAL **: 13:25:09.081: Could not read data from testSchema.testTable: GC life time is shorter than transaction duration, transaction starts at 2019-08-05 21:10:01.451 +0800 CST, GC safe point is 2019-08-05 21:14:53.801 +0800 CST
就再执行两步命令:
执行
mydumper
命令前,查询 TiDB 集群的 GC 值并使用 MySQL 客户端将其调整为合适的值:+-----------------------+------------------------------------------------------------------------------------------------+
| VARIABLE_NAME | VARIABLE_VALUE |
| tikv_gc_life_time | 10m0s |
+-----------------------+------------------------------------------------------------------------------------------------+
1 rows in set (0.02 sec)
-
UPDATE mysql.tidb SET VARIABLE_VALUE = '10m' WHERE VARIABLE_NAME = 'tikv_gc_life_time';
使用 TiDB Lightning 将之前导出的数据导入到 TiDB,完成恢复操作。具体的使用方法见