使用 Dumpling/TiDB Lightning 备份与恢复

    本文档将详细介绍如何使用 Dumpling/TiDB Lightning 对 TiDB 进行全量备份与恢复。增量备份和同步可使用 。

    这里假定 TiDB 服务器信息如下:

    • Dumpling:从 TiDB 导出数据
    • :导入数据到 TiDB

    为了快速地备份恢复数据(特别是数据量巨大的库),可以参考以下建议:

    • 如果导出的表中有些表的行数非常多,可以通过设置选项 -r 来开启表内并发。

    使用 dumpling 从 TiDB 备份数据的命令如下:

    上述命令中,用 -T test.t1 -T test.t2 表明只导出 test.,test.t2 两张表。更多导出数据筛选方式可以参考筛选导出的数据

    从 v4.0.0 版本开始,Dumpling 可以自动延长 GC 时间(Dumpling 需要访问 TiDB 集群的 PD 地址),而 v4.0.0 之前的版本,需要手动调整 GC 时间,否则 dumpling 备份时可能出现以下报错:

    1. 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

    手动调整 GC 时间的步骤如下:

    1. 执行 命令前,查询 TiDB 集群的 值并在 MySQL 客户端执行下列语句将其调整为合适的值:

      1. +-----------------------+------------------------------------------------------------------------------------------------+
      2. | VARIABLE_NAME | VARIABLE_VALUE |
      3. | tikv_gc_life_time | 10m0s |
      4. +-----------------------+------------------------------------------------------------------------------------------------+
      5. 1 rows in set (0.02 sec)
      1. UPDATE mysql.tidb SET VARIABLE_VALUE = '10m' WHERE VARIABLE_NAME = 'tikv_gc_life_time';

    使用 TiDB Lightning 将之前导出的数据导入到 TiDB,完成恢复操作。具体的使用方法见 TiDB Lightning 使用文档