一、安装(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 <task-name> skip
跳过对该 DDL 语句的迁移以恢复迁移任务。 - 如果业务能接受下游 TiDB 执行其他 DDL 语句来作为替代,则使用
handle-error <task-name> replace
替代该 DDL 的迁移以恢复迁移任务。
- 如果业务能接受下游 TiDB 不执行该 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
网友评论