一、备份 TiDB v3.0 命令

  1. ./bin/mydumper -h 127.0.0.1 -P 4000 -u root -t 32 -F 256 --skip-tz-utc -o ./var/test

-F 256 : 备份出来单个 SQL 文件大小为 256MB —skip-tz-utc:忽略 TiDB 与导入的机器之间时区设置不一致的情况,禁止自动转换

二、恢复到 TiDB v4.0

  1. 备份所有 schema 文件

    mkdir /tmp/edoc2v5_schema
    cp *schema.sql /tmp/edoc2v5_schema
    
  2. 修改所有表结构为 utf8 字符集和 utf8_general_ci

    sed -i "s/DEFAULT CHARSET=utf8/DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci/g" *schema.sql
    
  3. 进入数据库,提前创建好需要导入的数据库,例如 edoc2v5_new ,记得指定排序规则(这一步是为了避免 schema.sql 文件中,没有设置默认字符集的表,就不会在上一步添加上排序规则)

    MySQL [(none)]> create database edoc2v5_new default collate utf8_general_ci;
    
  4. 配置 tidb-lightning.toml 导入文件(需要导入到其他库,还需修改配置) ```shell [lightning]

转换数据的并发数,默认为逻辑 CPU 数量,不需要配置。

混合部署的情况下可以配置为逻辑 CPU 的 75% 大小。

region-concurrency =

日志

level = “info” file = “tidb-lightning.log”

[checkpoint]

是否启用断点续传。

导入数据时,TiDB Lightning 会记录当前表导入的进度。

所以即使 Lightning 或其他组件异常退出,在重启时也可以避免重复再导入已完成的数据。

enable = true

存储断点的数据库名称。

schema = “tidb_lightning_checkpoint”

存储断点的方式。

- file:存放在本地文件系统。

- mysql:存放在兼容 MySQL 的数据库服务器。

driver = “file”

[tikv-importer]

backend 设置为 local 模式

backend = “local”

设置本地临时存储路径

sorted-kv-dir = “/home/tidb/backup/tmpdir”

[mydumper]

Mydumper 源数据目录。

data-source-dir = “/tidb-backup/tidb-backup/backup” filter = [‘edoc2v5.‘,’!.rpt_fileoperationcount’]

[tidb]

目标集群的信息。tidb-server 的监听地址,填一个即可。

host = “127.0.0.1” port = 4000 user = “root” password = “”

表架构信息在从 TiDB 的“状态端口”获取。

status-port = 10080 ```

  1. 进行恢复