资讯

展开

从MySQL同步数据到TiDB

作者:快盘下载 人气:

一、安装(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


这里为单机模式,监控端口需要更改,不然容易与TiDB集群冲突 部署DM

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


通过 TiUP DM 部署的集群名称为 dm-test。 部署版本为 v2.0.7,可以通过执行 tiup list dm-master 来查看 TiUP 支持的最新版本。--user root:指定具有 sudo 权限的用户完成集群部署[]号里的 -p-i 为可选项,若已设置免密登录就不需填写,否则选择其一。-p 进入密码交互窗口,-i指定秘钥位置 查看 TiUP 管理DM情况

tiup dm list


启动DM 集群

tiup dm start dm-test


输出 Started cluster dm-test successfully 表示启动成功。 查看DM 集群信息

tiup dm display dm-test


Status 状态信息为 Up,说明集群状态正常;状态为 Down/inactive,表示未启动/不活跃。 三、同步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语句出错 迁移过程中,上游执行了 TiDB 不支持的 DDL 语句并迁移到了 DM,造成迁移任务中断。 如果业务能接受下游 TiDB 不执行该 DDL 语句,则使用 handle-error 跳过对该 DDL 语句的迁移以恢复迁移任务。 如果业务能接受下游 TiDB 执行其他 DDL 语句来作为替代,则使用 handle-error 替代该 DDL 的迁移以恢复迁移任务。 重置同步任务

清空下游数据库中数据

重启 source 并关闭 gtid 或 relay

重建任务并通过 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


加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!