从MySQL同步数据到TiDB

2021-11-11  本文已影响0人  风静花犹落

一、安装(TiUP)工具

下载并安装

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

更新环境变量

source ~/.bash_profile

查看版本

tiup --version

二、安装(TiDB Data Migration

下载安装包

tiup install dm dmctl

生成配置文件

tiup dm template > dm-topology.yaml

编辑配置文件

vim dm-topology.yaml

---
global:
  user: "tidb"
  ssh_port: 22
  deploy_dir: "/home/tidb/dm/deploy"
  data_dir: "/home/tidb/dm/data"

master_servers:
  - host: 192.168.0.127

worker_servers:
  - host: 192.168.0.127

monitoring_servers:
  - host: 192.168.0.127
    port: 7090

grafana_servers:
  - host: 192.168.0.127
    port: 7000

alertmanager_servers:
  - host: 192.168.0.127
    web_port: 7093
    cluster_port: 7094

部署DM

tiup dm deploy dm-test v2.0.7 ./dm-topology.yaml --user root [-p] [-i /home/root/.ssh/gcp_rsa]

查看 TiUP 管理DM情况

tiup dm list

启动DM 集群

tiup dm start dm-test

查看DM 集群信息

tiup dm display dm-test

三、同步MySQL数据

创建MySQL数据源

vim mysql-source-01.yaml

配置MySQL数据源

source-id: "mysql-source-01"

# DM-worker 是否使用全局事务标识符 (GTID) 拉取 binlog。使用前提是在上游 MySQL 已开启 GTID 模式。
enable-gtid: false

from:
  host: "172.16.10.81"
  user: "root"
  password: "VjX8cEeTX+qcvZ3bPaO4h0C80pe/1aU="
  port: 3306

加载配置到DM集群

tiup dmctl --master-addr 127.0.0.1:8261 operate-source create ./mysql-source-01.yaml

配置同步任务

根据不同场景,编辑任务配置文件vim task.yaml,点击查看详细配置

name: merge_task
shard-mode: "pessimistic"
task-mode: all

target-database:
  host: "127.0.0.1"
  port: 4000
  user: "root"
  password: "" 

mysql-instances:
  - source-id: "mysql-source-01"
    block-allow-list: "block-allow-01"
    route-rules: ["route-rule-01","route-rule-02"] 


block-allow-list: 
  block-allow-01:
    do-dbs: ["wisdom_test"]   
    do-tables:                       
    - db-name: "wisdom_test"             
      tbl-name: "*"

routes:
  route-rule-01:
    schema-pattern: "wisdom_test"
    target-schema: "wisdom_demo"
  route-rule-02:
    schema-pattern: "wisdom_test"
    table-pattern: "wisdom_attendance_*"
    target-schema: "wisdom_demo"
    target-table: "wisdom_attendance"

启动同步任务

tiup dmctl --master-addr 127.0.0.1:8261 start-task ./task.yaml

查询同步任务

tiup dmctl --master-addr 127.0.0.1:8261 query-status

删除同步任务

tiup dmctl --master-addr 127.0.0.1:8261 stop-task merge_task

解决问题步骤

1. 出现错误时,需查询任务query-status具体信息

tiup dmctl --master-addr 127.0.0.1:8261 query-status merge_task

2. 其任务stage状态为Paused

{
    "subTaskStatus": [
        {
            "name": "merge_task",
            "stage": "Paused",
            "result": {}
        }
    ]
}

3. 解决问题后,可以通过resume-task命令进行恢复

tiup dmctl --master-addr 127.0.0.1:8261 resume-task merge_task

DDL语句出错

重置同步任务

  1. 清空下游数据库中数据

  2. 重启 source 并关闭 gtid 或 relay

  3. 重建任务并通过 start-task task.yaml --remove-meta 重新同步,或者重命名任务名

监控同步任务

http://127.0.0.1:7000 进入 Grafana
http://127.0.0.1:7090 进入 Prometheus
http://127.0.0.1:7093 进入 Alertmanager
上一篇 下一篇

猜你喜欢

热点阅读