TiDB-从0到1-DM工具

在这里插入图片描述

TiDB从0到1系列

一、DM原理

支持全量抽取数据\检测新的数据变化同步到下游实例,其实与canal类似,相当于上游数据库的从节点监听binlog变化。

二、DM功能

  • 支持DML和DDL同步复制
  • 支持合库合表同步复制
  • 内置过滤器
  • 集中管理同步任务
  • 支持高可用部署

在这里插入图片描述

三、DM使用注意事项

  1. dmctl负责发送任务请求给DM master,master负责调度任务
  2. DM worker负责具体的同步工作,一个DM worker只能对应一个任务
  3. 上游数据库适用于mysql 5.5~8.0和mariadb >10.1.2。当然mysql8.0+也可以,只是部分语句兼容性较差。
  4. DDL有部分限制,如果失败会跳过

四、部署DM环境

安装dm和dmctl工具

tiup install dm dmctl

生成dm配置文件

tiup dm template > topology_dm.yaml
#修改文件内对应内容

global:
user: “tidb”
ssh_port: 22
deploy_dir: “/dm-deploy”
data_dir: “/dm-data”
server_configs:
master:
log-level: info
# rpc-timeout: “30s”
# rpc-rate-limit: 10.0
# rpc-rate-burst: 40
worker:
log-level: info
master_servers:
– host: 10.0.1.11
name: master1
ssh_port: 22
port: 8261
# peer_port: 8291
# deploy_dir: “/dm-deploy/dm-master-8261”
# data_dir: “/dm-data/dm-master-8261”
# log_dir: “/dm-deploy/dm-master-8261/log”
# numa_node: “0,1”
# 下列配置项用于覆盖 server_configs.master 的值。
config:
log-level: info
# rpc-timeout: “30s”
# rpc-rate-limit: 10.0
# rpc-rate-burst: 40
– host: 10.0.1.18
name: master2
ssh_port: 22
port: 8261
– host: 10.0.1.19
name: master3
ssh_port: 22
port: 8261
# 如果不需要确保 DM 集群高可用,则可只部署 1 个 DM-master 节点,且部署的 DM-worker 节点数量不少于上游待迁移的 MySQL/MariaDB 实例数。
# 如果需要确保 DM 集群高可用,则推荐部署 3 个 DM-master 节点,且部署的 DM-worker 节点数量大于上游待迁移的 MySQL/MariaDB 实例数(如 DM-worker 节点数量比上游实例数多 2 个)。
worker_servers:
– host: 10.0.1.12
ssh_port: 22
port: 8262
# deploy_dir: “/dm-deploy/dm-worker-8262”
# log_dir: “/dm-deploy/dm-worker-8262/log”
# numa_node: “0,1”
# 下列配置项用于覆盖 server_configs.worker 的值。
config:
log-level: info
– host: 10.0.1.19
ssh_port: 22
port: 8262
monitoring_servers:
– host: 10.0.1.13
ssh_port: 22
port: 9090
# deploy_dir: “/tidb-deploy/prometheus-8249”
# data_dir: “/tidb-data/prometheus-8249”
# log_dir: “/tidb-deploy/prometheus-8249/log”
grafana_servers:
– host: 10.0.1.14
port: 3000
# deploy_dir: /tidb-deploy/grafana-3000
alertmanager_servers:
– host: 10.0.1.15
ssh_port: 22
web_port: 9093
# cluster_port: 9094
# deploy_dir: “/tidb-deploy/alertmanager-9093”
# data_dir: “/tidb-data/alertmanager-9093”
# log_dir: “/tidb-deploy/alertmanager-9093/log”

查看dm可用的版本

tiup list dm

在这里插入图片描述

部署

tiup dm deploy dm-test v7.5.2 ./topology_dm.yaml --user root -p

查看dm列表

tiup dm list

在这里插入图片描述

tiup dm display dm-test

在这里插入图片描述

启动dm

tiup dm start dm-test

在这里插入图片描述

查看dm-test状态

tiup dm display dm-test

在这里插入图片描述

五、DM应用

1、准备上游配置文件(对应mysql)

vim mysql-source-conf1.yaml

source-id: "mysql-replica-01"
from:
  host: "xxx.xxx.xxx.xx"
  port: 3306
  user: "dba"
  password: "xxxxxxx"  #这里的密码可以是明文,也可以是通过dm-ctl加密后的密文

2、创建应用

tiup dmctl --master-addr=xxx.xx.xx.xx:8261 operate-source create mysql-source-conf1.yaml
在这里插入图片描述

#查看dm应用信息

tiup dmctl --master-addr=xxx.xxx.xxx.xx:8261 operate-source show

#查看详细信息

tiup dmctl --master-addr=xxx.xxx.xxx.xx:8261 get-config source mysql-replica-01

3、创建下游同步规则(基础配置)

vim dm-task1.yaml

name: "dm-task1"
#全量+增量
task-mode: all
#不检查自增主键
ignore-checking-items: ["auto_increment_ID"]

#下游tidb配置
target-database:
  host: "xx.xxx.xxx.xx"
  port: 4000
  user: "dba"
  password: "123456"

#上游mysql关联配置
mysql-instances:
  - source-id: "mysql-replica-01"
    route-rules: ["instance-1-user-rule"]

#规则,上游的blade_client表到下游的blade_client表(表名可以变)
routes:
  instance-1-user-rule:
    schema-pattern: "t100w"
    target-schema: "t100w"

4、校验同步配置

tiup dmctl --master-addr=xx.xx.xx.xx:8261 check-task dm-task1.yaml

在这里插入图片描述
(有报错需先处理,不然后续同步可能会受 影响)
在这里插入图片描述
(正常结果)

5、启动数据同步任务

tiup dmctl --master-addr=xx.xxx.xxx.xx:8261 start-task dm-task1.yaml

6、查看同步状态

tiup dmctl --master-addr=xx.xx.xx.xx:8261 query-status dm-task1.yaml

在这里插入图片描述
7、暂停同步

tiup dmctl --master-addr=xx.xxx.xxx.xx:8261 pause-task dm-task1.yaml

8、恢复同步

tiup dmctl --master-addr=xxx.xxx.xxx.xx:8261 resume-task dm-task1.yaml

9、终止同步任务

tiup dmctl --master-addr=xxx.xxx.xxx.xx:8261 stop-task dm-task1.yaml

六、DM扩缩容

1、worker节点下线

tiup dm scale-in dm-test -N xxx.xx.xxx.xx:8262

2、新增work节点

vim dm-scale.yaml

worker_servers:
- host: xxx.xxx.xxx.xx

tiup dm scale-out dm-test dm-scale.yaml -uroot -p

彩蛋

其实如果上游数据量较小(100G以内),且业务允许在低峰期中断的情况下, 直接使用dumpling来迁移更加方便。
当然也可以使用TiDB作为MySQL的下游归档库,dm-task1.yaml配置中支持多样化的过滤配置。

在这里插入图片描述

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值