当前位置: 首页 > news >正文

TiDB-从0到1-DM工具

在这里插入图片描述

TiDB从0到1系列

  • TiDB-从0到1-体系结构
  • TiDB-从0到1-分布式存储
  • TiDB-从0到1-分布式事务
  • TiDB-从0到1-MVCC
  • TiDB-从0到1-部署篇
  • TiDB-从0到1-配置篇
  • TiDB-从0到1-集群扩缩容
  • TiDB-从0到1-数据导出导入
  • TiDB-从0到1-BR工具

一、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: 3306user: "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: 4000user: "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配置中支持多样化的过滤配置。

在这里插入图片描述

http://www.lryc.cn/news/425008.html

相关文章:

  • AppScan——Web 应用安全扫描的得力工具
  • 虚幻5|AI行为树,进阶篇
  • 在 Spring Boot 中配置 Tomcat 监听多个端口
  • stm32f407新建项目工程及烧录
  • c++中加不加const的值传递和引用传递的区别
  • Qt的窗口设置
  • 51单片机-LCD1602显示屏
  • 多模态分析代理 MAIA:多智能体解决 视觉模型 黑盒问题
  • AT360-6T杭州中科微单频高精度授时模块场景应用
  • Python酷库之旅-第三方库Pandas(081)
  • C语言基础⑩——构造类型(结构体)
  • 宝兰德荣获openEuler项目群青铜捐赠人称号,共筑开源生态繁荣新篇章
  • 【Python单元测试】学习笔记3
  • OpenSSL源码编译及Debug
  • go之goburrow/modbus 学习
  • 开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么?
  • 【教程】Ubuntu给pycharm添加侧边栏快捷方式
  • 三个月外贸小白好迷茫,该何去何从?
  • MySQL数据库——基本查询(Create)
  • spring-security-1-快速入门
  • 5 大场景上手通义灵码企业知识库 RAG
  • 免费远程控制电脑的软件有哪些?
  • Linux软件包yum
  • 网页的切换与嵌套
  • 基于飞桨框架的稀疏计算使用指南
  • 启明云端WT32C3-S6物联网模块,乐鑫ESP32-C3芯片技术应用
  • 超越流水线,企业研发规范落地新思路
  • 财务会计与管理会计(四)
  • 回归分析系列1-多元线性回归
  • web小游戏开发:拼图——蜂巢拼图