TiDB Data Migration 快速上手指南

    1. 安装 TiUP 工具并通过 TiUP 快速部署 。

    2. 生成 DM 集群最小拓扑文件。

    3. 复制输出的配置信息,修改 IP 地址后保存为 topology.yaml 文件,使用 TiUP 部署 DM 集群。

      1. tiup dm deploy dm-test 6.0.0 topology.yaml -p

    第 2 步:准备数据源

    你可以使用一个或多个 MySQL 实例作为上游数据源。

    1. 为每一个数据源编写如下配置文件:

      1. source-id: "mysql-01"
      2. from:
      3. host: "127.0.0.1"
      4. user: "root"
      5. password: "fCxfQ9XKCezSzuCD0Wf5dUD+LsKegSg=" # 使用 tiup dmctl --encrypt "123456" 加密。
      6. port: 3306

    若环境中并不存在可供测试的 MySQL 实例,可以使用以下方式通过 Docker 快速创建一个测试实例。步骤如下:

    1. 编写 MySQL 配置文件:

      1. cat > my.cnf <<EOF
      2. [mysqld]
      3. bind-address = 0.0.0.0
      4. character-set-server=utf8
      5. collation-server=utf8_bin
      6. transaction-isolation=READ-COMMITTED
      7. server-id = 100
      8. binlog_format = row
      9. log_bin = /var/lib/mysql/mysql-bin.log
      10. show_compatibility_56 = ON
      11. EOF
    2. 使用 Docker 启动 MySQL 实例:

      1. docker run --name mysql-01 -v /tmp/mysqltest:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 3306:3306 mysql:5.7
    3. 待 MySQL 启动后,即可连接该实例。

      1. mysql -uroot -p -h 127.0.0.1 -P 3306

    可以选择已存在的 TiDB 集群作为数据同步目标。

    如果没有可以用于测试的 TiDB 集群,则使用以下命令快速构建演示环境。

    第 4 步:准备测试数据

    在一个或多个数据源中创建测试表和数据。如果你使用已存在的 MySQL 数据库,且数据库中已有可用数据,可跳过这一步。

    1. drop database if exists `testdm`;
    2. create database `testdm`;
    3. use `testdm`;
    4. create table t1 (id bigint, uid int, name varchar(80), info varchar(100), primary key (`id`), unique key(`uid`)) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
    5. insert into t1 (id, uid, name) values (1, 10001, 'Gabriel García Márquez'), (2, 10002, 'Cien años de soledad');
    6. insert into t2 (id, uid, name) values (3, 20001, 'José Arcadio Buendía'), (4, 20002, 'Úrsula Iguarán'), (5, 20003, 'José Arcadio');
    1. 创建任务的配置文件 testdm-task.yaml

      1. name: testdm
      2. target-database:
      3. host: "127.0.0.1"
      4. port: 4000
      5. user: "root"
      6. password: "" # 如果密码不为空,则推荐使用经过 dmctl 加密的密文
      7. # 填写一个或多个所需同步的数据源信息
      8. mysql-instances:
      9. - source-id: "mysql-01"
      10. block-allow-list: "ba-rule1"
      11. block-allow-list:
      12. ba-rule1:
      13. do-dbs: ["testdm"]
    2. 使用 dmctl 创建任务:

      第 6 步:查看迁移任务状态

      在创建迁移任务之后,可以用 来查看任务的状态。