TiDB-从0到1-DM工具

news2024/9/21 8:03:51

在这里插入图片描述

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: 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配置中支持多样化的过滤配置。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2043760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

易基因:RNA修饰N4-乙酰胞苷(ac4C)的调控机制、检测方法及其在癌症中的作用最新研究进展|新方向

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 N4-乙酰胞苷(ac4C)是一种高度保守的化学修饰,广泛存在于真核和原核生物RNA中,如tRNA、rRNA和mRNA。这种修饰与多种人类疾病显著相关&#…

【计算机科学的数学基础】二分法查找

二分法查找 问题引入在有序数列中查找 问题引入 问:有15个犯罪嫌疑人排成一排,其中只有1个是真正的“犯人”。你要通过问他们“犯人在哪里?”来找出真正的犯人。没问一次问题都会得到以下3种答案: 我是犯人犯人在我左边犯人在我右…

MATLAB多项式拟合

订阅专栏或下载资源可以获得源代码:https://download.csdn.net/download/callmeup/89632160 拟合和插值 拟合和插值是两种常见的数学方法,用于以某种方式近似或估计实际数据。 拟合是在给定一组已知数据点的情况下,通过选择一个合适的数学模型来拟合数据。拟合的目标是找到…

Mininet应用实践

Mininet应用实践 一、实验目的 (1)能够运用mininet可视化工具创建网络拓扑结构。 (2)能够运用mininet交互界面创建网络拓扑结构。 (3)能够运用python脚本构建网络拓扑结构。 二、实验原理或预习内容 &a…

EmguCV学习笔记 VB.Net 2.2 Matrix类

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV学习笔记目录 Vb.net EmguCV学习笔记目录 C# 笔者的博客网址:VB.Net-CSDN博客 教程相关说明以及如何获得pdf教程…

*(论文解读)Prompt-Based Distribution Alignment for Unsupervised Domain Adaptation

Prompt-Based Distribution Alignment for Unsupervised Domain Adaptation 用于UDA的基于提示的分布对齐(二区论文) 摘要 近年来,尽管大型视觉语言模型(VLM)在大规模的下游任务中取得了前所未有的成功,…

HTML标签简明通俗教程

HTML标签简明通俗教程 基本知识 HTML:是超文本标记语言(Hyper Text Markup Language)的缩写,它是用于创建网页的标准标记语言。标签是构成HTML文档的基本单位。 【HTML中的标签(tag)和元素(e…

一款手机壳凭什么卖800元?Casetify品牌策略全解析 | 品牌出海

Casetify官网 巴黎奥运会,张怡宁的手机壳火了。 张怡宁在现场观战并使用手机的照片在网上流传,不是因为这位奥运前冠军,而是她的手机壳。这款满是「花花绿绿」图案的手机壳,迅速被网友发掘出是Casetify品牌的名为「炫彩花卉」的…

Windosw下Visual Studio2022编译OpenCV

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它提供了一系列用于处理图像和视频的算法和函数,包括图像处理、特征检测、物体识别、人脸识别等。OpenCV支持多种编程语言,如C、Python、Ja…

从源码到应用:医疗陪诊系统与在线问诊小程序开发详解

在数字化医疗时代,医疗陪诊系统与在线问诊小程序的开发成为了医疗机构和技术公司关注的焦点。接下来,小编将与您一同深入了解。 一、医疗陪诊系统的核心功能 医疗陪诊系统旨在为患者提供更贴心的医疗服务,通过专业人员陪同患者完成就医过程。…

谷歌如何增加网站被收录的机会?

要增加网站被搜索引擎收录的机会,你需要采取一些有效的措施,要确保网站的内容质量高,内容质量不高的内容,哪怕被收录了,之后也是有很大概率会掉的,必须确保内容对用户是有价值的,并且是原创的&a…

ppt文件批量设置打开权限密码的方法

为PPT文件批量设置打开权限密码,可以通过Office软件内置的功能或借助第三方软件来实现。对于少量文件可以用PPT内置的密码设置功能实现,但是对于文件比较多的情况下必须要用到第三方的软件来进行批量设置,以下是一些方法。 一、使用Office软件…

立式报工台助力MES系统打造智能硬件解决方案

信息化与自动化的深度结合,使得企业在生产效率、质量控制以及资源管理等方面得以大幅提升。制造执行系统MES作为连接企业管理层与生产现场的重要桥梁,正在愈发得到重视。为了进一步强化MES系统的功能与应用,立式报工台作为一种新兴的智能硬件…

【网络】TCP协议面向字节流和粘包问题

目录 面向字节流 粘包问题 解决粘包问题的方法 个人主页:东洛的克莱斯韦克-CSDN博客 面向字节流 TCP是一种面向字节流的协议,这意味着TCP并不将传输的数据视为独立的消息或报文,而是将其视为一个连续的字节序列。在TCP连接中,发…

通过AI帮我分析实现的2019销售季度对比叠加图

话不多说,看效果 1)先准备销售表内容:高手自测.xlsx 2)向kimi上传文件,并提问 3)得出结果,代码如下: import pandas as pd from pyecharts.charts import Bar, Line, Overlap from pyecharts import options as opts# 读取Excel文件 df pd.read_excel(高手自测3.xlsx)# 数据预…

jenkins工具配置

上一篇(https://blog.csdn.net/abc666_666/article/details/141207741)文章我们介绍了基于docker安装jenkins的过程,本文将介绍如何配置jenkins的相关全局工具如maven、 jdk以及git等 配置的页面如下: 打开后的页面如下&#xff…

JookDB和MobaXterm下载安装使用

文章目录 1.使用背景2.MobaXterm的下载安装使用3.JooKDB的下载安装使用 1.使用背景 由于xshell和xftp等工具都是收费的,即使有破解版但是有的公司里不让用盗版的软件。可以使用MobaXterm来替代。 同理可使用JooKDB来代替收费的navicat 来连接数据库。 2.MobaXterm…

机器学习深度学习中的搜索算法浅谈

机器学习&深度学习中的搜索算法浅谈 搜索算法是计算机科学中的核心算法,用于在各种数据结构(如数组、列表、树、图等)中查找特定元素或信息。这些算法不仅在理论上具有重要意义,还在实际应用中扮演着关键角色。本文将详细探讨…

vulnhub靶机:DC-4

目录 导入靶机 信息收集 发现IP 目录扫描 端口扫描 访问 web 弱口令爆破 反弹shell 获得交互式 shell 提权 使用 hydra 暴力破解 SSH 连接 jim 用户 登录charles账户 使用 teehee 创建 root 用户 导入靶机 点击重试 然后网卡换成 NAT模式,开启靶机 信息…

web前端之实现霓虹灯背景魔术卡、旋转的背景动画、模糊效果、边框、变量、filter

MENU 前言效果图htmlstyle 前言 代码段定义一个名为Magic Card的卡片&#xff0c;并通过一系列CSS属性和动画效果来美化和增强该卡片的视觉效果。 效果图 html <div class"card">Magic Card </div>style 代码 property --rotate {syntax: "<a…