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使用注意事项
- dmctl负责发送任务请求给DM master,master负责调度任务
- DM worker负责具体的同步工作,一个DM worker只能对应一个任务
- 上游数据库适用于mysql 5.5~8.0和mariadb >10.1.2。当然mysql8.0+也可以,只是部分语句兼容性较差。
- 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开发界面程序,会涉及到窗口的设置,如窗口标题栏是否显示,是否有最小,最大化按钮等,窗口当前显示最小化,最大化等。本文简要介绍常用的窗口设置方法。 1.窗口属性 窗口属性…...
51单片机-LCD1602显示屏
简介 是一个液晶显示屏,通过电压对显示区域进行控制,有电就显示。 能够同时显示32个字符,分为两行,一行显示16个字符。可以显示的内容只能是字母、数字或者一些特殊符号。 使用ASCII码来让LCD1602来显示对应的字符。 电路图 …...
多模态分析代理 MAIA:多智能体解决 视觉模型 黑盒问题
多模态分析代理 MAIA:多智能体解决 视觉模型 黑盒问题 论文:https://arxiv.org/pdf/2404.14394 代码:https://github.com/multimodal-interpretability/maia 提出背景 神经网络方法提取的特征,没有可解释性。 数据在通过多个层…...
AT360-6T杭州中科微单频高精度授时模块场景应用
AT360-6T是一款高性能多系统卫星定位授时模块,基于自主研发的北斗多系统SOC芯片,可以同时接收中国的BDS(北斗二号和北斗三号)、美国的GPS、俄罗斯的GLONASS、欧盟的 GALILEO 和日本的QZSS等多个卫星导航系统的GNSS信号来实现多系统联合定位授时ÿ…...
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、基本类型 整数型 短整型:short(2个字节);整型(默认):int(4个字节);长整型:long(8个字节)…...
宝兰德荣获openEuler项目群青铜捐赠人称号,共筑开源生态繁荣新篇章
近日,开放原子开源基金会正式公布了新增捐赠人名单,宝兰德凭借在开源领域的卓越贡献与深厚实力,被授予openEuler项目群青铜捐赠人称号。 开放原子开源基金会是致力于推动全球开源事业发展的非营利机构,于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获得源码,或者直接去GitHub上下载压缩包,GitHub网址…...
go之goburrow/modbus 学习
goburrow/modbus 是一个用Go语言实现的Modbus协议库,提供了Modbus主机(Master)和从机(Slave)的实现,支持两种主要的Modbus传输模式:Modbus TCP和Modbus RTU。 功能介绍 1. 支持的传输模式 Mod…...
开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么?
开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么? 随着计算机视觉技术的快速发展,目标检测(Object Detection)已经在各种应用场景中得到了广泛的应用。然而,传统的目标检…...
【教程】Ubuntu给pycharm添加侧边栏快捷方式
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 以下教程不仅限于pycharm,其他软件也是一样操作 1、进入到pycharm的目录,先通过命令行打开pycharm: ./bin/pycharm…...
三个月外贸小白好迷茫,该何去何从?
最近看到一个共性的问题,也许对于大多数外贸新人来说,都有过这样的困扰和无力感,也许对于每一个没有强大背景的外贸小伙伴来说,可能都是这样一路成长起来的。 大家好,我是一名普通二本英专生,八月中旬入职…...
MySQL数据库——基本查询(Create)
CRUD:Create(创建)Retrieve(读取)Update(更新)Delete(删除) 1.Create ①单行数据全列插入 insert [into] table_name [(colume[,colume]……)] values (value_list) […...
spring-security-1-快速入门
1 功能 身份认证(authentication)授权(authorization)防御常见攻击 身份认证:常见账号密码登录,短信登录 授权:什么样的角色,能看见什么菜单,能访问哪些接口。 2 pom <dependency><groupId>org.springf…...
5 大场景上手通义灵码企业知识库 RAG
大家好,我是通义灵码,你的智能编程助手!最近我又升级啦,智能问答功能全面升级至 Qwen2,新版本在各个方面的性能和准确性都得到了显著提升。此外,行间代码补全效果也全面优化,多种编程语言生成性…...
免费远程控制电脑的软件有哪些?
什么是远程控制? 远程控制是一种通过网络从一台设备操作另一台设备的技术。连接后,用户可以直接远程操作那台电脑进行各种操作。随着科技的不断进步和用户需求的增加,远程控制市场日益蓬勃。远程控制不仅应用于远程办公和远程教学࿰…...
Linux软件包yum
目录 Linux软件包管理器 yum关于rzsz注意事项查看软件包如何安装软件卸载命令 Linux开发工具Linux编辑器-vim使用1. vim的基本概念2. vim的基本操作3. vim正常模式命令集4. vim末行模式命令集5. vim操作总结 小彩蛋 Linux软件包管理器 yum 软件包 在Linux下安装软件ÿ…...
网页的切换与嵌套
网页的切换与嵌套 网页的切换 在浏览器窗口中如果点击超链接标签会在当前的浏览器窗口中显示新的数据,但有些超链接标签点击后却会在一个新的窗口显示数据,这种情况下就无法对新的开的窗口页面进行操作了。 基于这种情况,我们就需要使用dri…...
基于飞桨框架的稀疏计算使用指南
本文作者-是 Yu 欸,华科在读博士生,定期记录并分享所学知识,博客关注者5w。本文将详细介绍如何在 PaddlePaddle 中利用稀疏计算应用稀疏 ResNet,涵盖稀疏数据格式的础知识、如何创建和操作稀疏张量,以及如何开发和训练…...
启明云端WT32C3-S6物联网模块,乐鑫ESP32-C3芯片技术应用
随着物联网技术的飞速发展,智能设备在我们生活中的应用越来越广泛。从智能电网到远程医疗,从楼宇自动化到智能家居,这些技术正在改变我们的生活方式。 在这样的背景下,启明云端推出的WT32C3-S6 WiFi模块以其低功耗、高性价比的特…...
超越流水线,企业研发规范落地新思路
作者:子丑 内容大纲: 1、研发规范≠流程约束 2、自动化工具→研发规范载体 3、研发规范在工具上的落地示例 4、研发规范的选型方法与常见实践 研发规范≠流程约束 这个故事特别适合研发规范的场景,我们要避免成为把猫绑在柱子上的信众…...
财务会计与管理会计(四)
文章目录 月度数据统计分析OFFSET函数在图表分析中的应用 多种费用组合分析图SUMPRODUCT函数 省公司全年数据分析模板INDIRECT、OFFSET函数 多公司分季度数据筛选VLOOKUP、IFERROR函数的应用 淘宝后台数据分析OFFSET函数在跨表取数中的应用 燃气消耗台账数据统计分析图SUMPRODU…...
回归分析系列1-多元线性回归
03 多元线性回归 3.1 简介 多元线性回归是简单线性回归的扩展,允许我们同时研究多个自变量对因变量的影响。多元回归模型可以表示为: 其中,x1,x2,…,xp是 p 个自变量,β0 是截距,β1,β2,…,βp是对应的回归系数&…...
政协网站 两学一做专题研讨/中国营销网站
2019独角兽企业重金招聘Python工程师标准>>> 随着《愤怒的小鸟》的发布所受到了广大游戏爱好者的好评,从而大多数游戏开发者在看到《愤怒的小鸟》时,肯定非常想知道该游戏的开发技术,为了满足网友的需求,于是推出了《盛…...
郑州网站建设公司有哪些/百度官网电话客服24小时
让我们假设我有一个外部设备,不断将数据推送到我的驱动程序中的小缓冲区.我正在使用等待队列,其中中断处理程序唤醒等待的用户进程(类似于LDD(第3版) – 实现处理程序).irq_handler_t irq_handler(int irq, void *dev_id, struct pt_regs *regs){flag 1;wake_up_interruptible…...
响应式布局网站/互联网项目推广
目录 1 主要内容 共享电站示意图 目标函数 2 部分程序 3 程序结果 4 程序链接 1 主要内容 该程序方法复现《基于共享储能电站的工业用户日前优化经济调度》算例2和算例3,根据共享储能电站的商业运营模式,将共享储能电站应用到工业用户经济优化调度…...
河北邯郸网站建设公司/厦门seo厦门起梦
学习Office自动化之前先阅读一些COM书籍,对于理解Office自动化有很大帮助。以下示例代码使用VS2010进行编译。目前市面上已有的关于Office自动化的书籍,多是快餐式的,看过之后只能知道最基本的使用。要想更多的了解,非得MSDN不可。…...
网站开发有什么注意的/聊城网站推广的公司
可以在vs上调试lua的插件,就是vslua。vslua不只能调试独立的lua脚本,而且还能调试luabind,luaplus等在C中调用的lua函数。只需将vslua的编译器设置成带有lua导出符号的dll,就可以用这个dll进行调试lua了,相当方便。这样就可以抛弃…...
中国免费建站网/友情链接查询
HBase四类主要操作 put:增加一行,修改一行; get:获取指定行的所有信息,获取指定行和指定列族的所有column,获取指定column的几个版本等; scan:获取指定行键范围的行; …...