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

在这里插入图片描述

相关文章:

TiDB-从0到1-DM工具

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇TiDB-从0到1-配置篇TiDB-从0到1-集群扩缩容TiDB-从0到1-数据导出导入TiDB-从0到1-BR工具 一、DM原理 支持全量抽取数据\检测新的数据变化同步到下游实例…...

AppScan——Web 应用安全扫描的得力工具

一、引言 在当今数字化时代,Web 应用成为企业业务的重要支撑,但同时也面临着各种安全威胁。AppScan 作为一款专业的 Web 应用安全扫描工具,为保障 Web 应用的安全性提供了有力的支持。本文将对 AppScan 进行详细介绍,包括其功能、…...

虚幻5|AI行为树,进阶篇

一,打开敌人的角色蓝图,编写以下蓝图,该蓝图只是创建一个敌人并非ai行为树 1.编写蓝图 2.打开主界面,创建一个导航网格体积,上一章都有讲,在添加体积这里面,找到导航网格体积,点击创…...

在 Spring Boot 中配置 Tomcat 监听多个端口

在现代微服务架构中,应用程序可能需要监听多个端口,以支持不同的服务或协议。Spring Boot 提供了灵活的配置选项,使得这一需求变得简单而高效。本文将介绍如何在 Spring Boot 中配置 Tomcat 以监听多个端口,并简要说明其中一些关键…...

stm32f407新建项目工程及烧录

1、新建一个文件夹,打开keil5将项目工程放入文件夹中 2、弹出选择对应型号设备 3、弹出选择对应库 可以看见出现下图:感叹号表示有错 最后如图所示:点击ok就行了 4、创建对应的文件夹存放文件 4、建立main.c 5、添加对应的设置 最后写一个空白…...

c++中加不加const的值传递和引用传递的区别

文章目录 可以修改参数值的比较值传递(int x)和引用传递(int &x)使用const不修改参数值的比较值传递(const int x)和引用传递(const int &x)1. const int x 示例2. const int &x 示例 可以修改参数值的比较值传递(int x)和引用传递(int &x) #include <iost…...

Qt的窗口设置

本文介绍Qt的窗口设置。 采用Qt开发界面程序&#xff0c;会涉及到窗口的设置&#xff0c;如窗口标题栏是否显示&#xff0c;是否有最小&#xff0c;最大化按钮等&#xff0c;窗口当前显示最小化&#xff0c;最大化等。本文简要介绍常用的窗口设置方法。 1.窗口属性 窗口属性…...

51单片机-LCD1602显示屏

简介 是一个液晶显示屏&#xff0c;通过电压对显示区域进行控制&#xff0c;有电就显示。 能够同时显示32个字符&#xff0c;分为两行&#xff0c;一行显示16个字符。可以显示的内容只能是字母、数字或者一些特殊符号。 使用ASCII码来让LCD1602来显示对应的字符。 电路图 …...

多模态分析代理 MAIA:多智能体解决 视觉模型 黑盒问题

多模态分析代理 MAIA&#xff1a;多智能体解决 视觉模型 黑盒问题 论文&#xff1a;https://arxiv.org/pdf/2404.14394 代码&#xff1a;https://github.com/multimodal-interpretability/maia 提出背景 神经网络方法提取的特征&#xff0c;没有可解释性。 数据在通过多个层…...

AT360-6T杭州中科微单频高精度授时模块场景应用

AT360-6T是一款高性能多系统卫星定位授时模块&#xff0c;基于自主研发的北斗多系统SOC芯片&#xff0c;可以同时接收中国的BDS(北斗二号和北斗三号)、美国的GPS、俄罗斯的GLONASS、欧盟的 GALILEO 和日本的QZSS等多个卫星导航系统的GNSS信号来实现多系统联合定位授时&#xff…...

Python酷库之旅-第三方库Pandas(081)

目录 一、用法精讲 336、pandas.Series.str.rpartition方法 336-1、语法 336-2、参数 336-3、功能 336-4、返回值 336-5、说明 336-6、用法 336-6-1、数据准备 336-6-2、代码示例 336-6-3、结果输出 337、pandas.Series.str.slice方法 337-1、语法 337-2、参数 …...

C语言基础⑩——构造类型(结构体)

一、数据类型分类 1、基本类型 整数型 短整型&#xff1a;short&#xff08;2个字节&#xff09;&#xff1b;整型&#xff08;默认&#xff09;&#xff1a;int&#xff08;4个字节&#xff09;&#xff1b;长整型&#xff1a;long&#xff08;8个字节&#xff09;&#xf…...

宝兰德荣获openEuler项目群青铜捐赠人称号,共筑开源生态繁荣新篇章

近日&#xff0c;开放原子开源基金会正式公布了新增捐赠人名单&#xff0c;宝兰德凭借在开源领域的卓越贡献与深厚实力&#xff0c;被授予openEuler项目群青铜捐赠人称号。 开放原子开源基金会是致力于推动全球开源事业发展的非营利机构&#xff0c;于2020年6月在北京成立。开放…...

【Python单元测试】学习笔记3

文章目录 08.PyTest框架什么是PyTestPyTest的优点PyTest的测试环境PyTest常用参数跳过测试 09.PyTest fixture基础PyTest fixture定义和使用引用多个Fixture 10. conftest.pyconftest.py的用途 11. 参数化测试用例为什么需要参数化测试用例使用parameterizer插件实现使用pytest…...

OpenSSL源码编译及Debug

** 1. 环境 Linux 5.19.0-14-generic 22.04.1-Ubuntu 2. 所需工具 gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04) cmake version 3.22.1 3. 步骤 3.1 获取openssl源码 方法可以git clone获得源码&#xff0c;或者直接去GitHub上下载压缩包&#xff0c;GitHub网址&#xf…...

go之goburrow/modbus 学习

goburrow/modbus 是一个用Go语言实现的Modbus协议库&#xff0c;提供了Modbus主机&#xff08;Master&#xff09;和从机&#xff08;Slave&#xff09;的实现&#xff0c;支持两种主要的Modbus传输模式&#xff1a;Modbus TCP和Modbus RTU。 功能介绍 1. 支持的传输模式 Mod…...

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么?

开放词汇目标检测&#xff08;Open-Vocabulary Object Detection, OVOD&#xff09;算法是什么&#xff1f; 随着计算机视觉技术的快速发展&#xff0c;目标检测&#xff08;Object Detection&#xff09;已经在各种应用场景中得到了广泛的应用。然而&#xff0c;传统的目标检…...

【教程】Ubuntu给pycharm添加侧边栏快捷方式

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 以下教程不仅限于pycharm&#xff0c;其他软件也是一样操作 1、进入到pycharm的目录&#xff0c;先通过命令行打开pycharm&#xff1a; ./bin/pycharm…...

三个月外贸小白好迷茫,该何去何从?

最近看到一个共性的问题&#xff0c;也许对于大多数外贸新人来说&#xff0c;都有过这样的困扰和无力感&#xff0c;也许对于每一个没有强大背景的外贸小伙伴来说&#xff0c;可能都是这样一路成长起来的。 大家好&#xff0c;我是一名普通二本英专生&#xff0c;八月中旬入职…...

MySQL数据库——基本查询(Create)

CRUD&#xff1a;Create&#xff08;创建&#xff09;Retrieve&#xff08;读取&#xff09;Update&#xff08;更新&#xff09;Delete&#xff08;删除&#xff09; 1.Create ①单行数据全列插入 insert [into] table_name [(colume[,colume]……)] values (value_list) […...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...