使用canal.deployer-1.1.7和canal.adapter-1.1.7实现mysql数据同步

ops/2024/9/24 5:25:00/

1、下载地址 


 

--查看是否开启bin_log日志,value = on表示开启
SHOW VARIABLES LIKE 'log_bin';
-- 查看bin_log日志文件
SHOW BINARY LOGS;
--查看bin_log写入状态
SHOW MASTER STATUS;
--查看bin_log存储格式 = row
SHOW VARIABLES LIKE 'binlog_format';
--查看数据库服务id
SHOW VARIABLES LIKE 'server_id';


 

下载下面两个即可

2、解压下载好的文件

 3、修改 canal.deployer的配置文件 canal.deployer-1.1.7\conf\example\instance.properties,并进入到 canal.deployer-1.1.7\bin 目录下启动程序,instance.properties配置文件修改如下内容

# position info   #这里修改为数据源库的地址 账号密码 以及同步的表
canal.instance.master.address=127.0.0.1:3306
canal.instance.dbUsername=root
canal.instance.dbPassword=zsj381599113QQ
canal.instance.filter.regex=mytest.prj_bridge,mytest.prj_health_rule

然后执行启动命令

4、使用 canal.adapter 将 数据源数据同步至 目标数据库

修改 canal.adapter-1.1.7\conf\application.yml 配置文件 

server:port: 8081
spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8default-property-inclusion: non_nullcanal.conf:mode: tcp #tcp kafka rocketMQ rabbitMQflatMessage: truezookeeperHosts:syncBatchSize: 1000retries: -1timeout:accessKey:secretKey:consumerProperties:#  canal.deployer的地址和端口canal.tcp.server.host: 127.0.0.1:11111canal.tcp.batch.size: 500srcDataSources:defaultDS: # 对应canal.adapter-1.1.7\conf\rdb下的配置文件中的dataSourceKey的value值#数据源url: jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=trueusername: rootpassword: zsj381599113QQcanalAdapters:- instance: example # example对应路径canal.deployer-1.1.7\conf\example 和canal.adapter-1.1.7\conf\rdb下的配置文件中的 destination的value值groups:- groupId: g1    # g1对应canal.adapter-1.1.7\conf\rdb下的配置文件中的 groupId的value值   outerAdapters:- name: rdb  #rdb对应路径canal.adapter-1.1.7\conf\rdbkey: mysql1  # mysql1 对应 canal.adapter-1.1.7\conf\rdb下的配置文件中的outerAdapterKey的value值 properties:#目标数据库信息jdbc.driverClassName: com.mysql.jdbc.Driverjdbc.url: jdbc:mysql://127.0.0.1:3306/mytest2?useUnicode=truejdbc.username: rootjdbc.password: zsj381599113QQdruid.stat.enable: falsedruid.stat.slowSqlMillis: 1000

4、修改 canal.adapter-1.1.7\conf\rdb下的mysql1.yml的配置内容

dataSourceKey: defaultDS
destination: example
groupId: g1
outerAdapterKey: mysql1
concurrent: true
dbMapping:#源数据库 database: mytest#源数据库表table: prj_bridge#目标数据库表targetTable: prj_bridgetargetPk:id: id#表字段一样全部映射  mapAll: truecommitBatch: 100 # 批量提交的大小

5、win下面canal.adapter-1.1.7\bin的startup.bat文件改成如下,不然会报错

@echo off
@if not "%ECHO%" == ""  echo %ECHO%
@if "%OS%" == "Windows_NT"  setlocalset ENV_PATH=.\
if "%OS%" == "Windows_NT" set ENV_PATH=%~dp0%set conf_dir=%ENV_PATH%\..\confset CLASSPATH=%conf_dir%
set CLASSPATH=%CLASSPATH%;%conf_dir%\..\lib\*set JAVA_MEM_OPTS= -Xms128m -Xmx512m -XX:PermSize=128m
set JAVA_OPTS_EXT= -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dapplication.codeset=UTF-8 -Dfile.encoding=UTF-8
set ADAPTER_OPTS= -DappName=canal-adapterset JAVA_OPTS= %JAVA_MEM_OPTS% %JAVA_OPTS_EXT% %ADAPTER_OPTS%set CMD_STR= java %JAVA_OPTS% -classpath "%CLASSPATH%" com.alibaba.otter.canal.adapter.launcher.CanalAdapterApplication
echo start cmd : %CMD_STR%java %JAVA_OPTS% -classpath "%CLASSPATH%" com.alibaba.otter.canal.adapter.launcher.CanalAdapterApplication

然后启动canal.adapter 即可实现数据同步

如果需要同步多张表 canal.adapter-1.1.7\conf\application.yml配置如下 

server:port: 8081
spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8default-property-inclusion: non_nullcanal.conf:mode: tcp #tcp kafka rocketMQ rabbitMQflatMessage: truezookeeperHosts:syncBatchSize: 1000retries: -1timeout:accessKey:secretKey:consumerProperties:#  canal.deployer的地址和端口canal.tcp.server.host: 127.0.0.1:11111canal.tcp.batch.size: 500srcDataSources:defaultDS: # 对应canal.adapter-1.1.7\conf\rdb下的配置文件中的dataSourceKey的value值#数据源url: jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=trueusername: rootpassword: zsj381599113QQcanalAdapters:- instance: example # example对应路径canal.deployer-1.1.7\conf\example 和canal.adapter-1.1.7\conf\rdb下的配置文件中的 destination的value值groups:- groupId: g1    # g1对应canal.adapter-1.1.7\conf\rdb下的配置文件中的 groupId的value值   outerAdapters:- name: rdb  #rdb对应路径canal.adapter-1.1.7\conf\rdbkey: mysql1  # mysql1 对应 canal.adapter-1.1.7\conf\rdb下的配置文件中的outerAdapterKey的value值 properties:#目标数据库信息jdbc.driverClassName: com.mysql.jdbc.Driverjdbc.url: jdbc:mysql://127.0.0.1:3306/mytest2?useUnicode=truejdbc.username: rootjdbc.password: zsj381599113QQdruid.stat.enable: falsedruid.stat.slowSqlMillis: 1000- name: rdb  #rdb对应路径canal.adapter-1.1.7\conf\rdbkey: mysql2  # mysql1 对应 canal.adapter-1.1.7\conf\rdb下的配置文件中的outerAdapterKey的value值 properties:#目标数据库信息jdbc.driverClassName: com.mysql.jdbc.Driverjdbc.url: jdbc:mysql://127.0.0.1:3306/mytest2?useUnicode=truejdbc.username: rootjdbc.password: zsj381599113QQdruid.stat.enable: falsedruid.stat.slowSqlMillis: 1000

canal.adapter-1.1.7\conf\rdb目录下需要同步几张表的数据就有几个yml配置文件,此次实验同步两张表,两个配置文件如下  mysql1.yml

dataSourceKey: defaultDS
destination: example
groupId: g1
outerAdapterKey: mysql1
concurrent: true
dbMapping:#源数据库 database: mytest#源数据库表table: prj_bridge#目标数据库表targetTable: prj_bridgetargetPk:id: id#表字段一样全部映射  mapAll: truecommitBatch: 100 # 批量提交的大小

mysql2.yml

dataSourceKey: defaultDS
destination: example
groupId: g1
outerAdapterKey: mysql2
concurrent: true
dbMapping:#源数据库 database: mytest#源数据库表table: prj_health_rule#目标数据库表targetTable: prj_health_ruletargetPk:id: id#表字段一样全部映射  mapAll: truecommitBatch: 100 # 批量提交的大小


http://www.ppmy.cn/ops/113448.html

相关文章

秋招自我介绍

1min 尊敬的面试官您好,感谢您百忙之中参加我的面试。我是来自北京大学的王峰。 在实习经历方面,我曾在美团和小米公司实习。在美团主要负责核身、质检、词云项目。 在核身项目中,完整的经历从0-1的项目上线过程 在质检项目中,进…

linux命令行快捷键

第一章 linux之帮助命令 第二章 linux命令行快捷键 文章目录 linux命令行快捷键 linux命令行快捷键 Tab 命令补全或文件补全Ctrlu 删除或剪切光标之前的命令Ctrla 将光标移动到命令行开头Ctrle 将光标移动到命令行结尾ctrlc 终止当前命令ctrll 清屏ctrly 粘贴ctrlu的内容 参考…

《ElementUI/Plus 踩坑》el-table + sortablejs 拖拽顺序错乱(Vue2/3适用)

如图所示: 把第一行拖到最后一行,鼠标up;该行莫名其妙的跳到倒数第二行; 最后发现没有设置 el-table 属性 row-key ,即行数据的 Key,用来优化 table 的渲染; 属性 row-key 描述如下&#xf…

Vim使用技巧——第一章 Vim解决问题的方式

1、认识 . 命令 . 命令可以“重复上次修改”。 x 会删除光标下字符 u 撤销上次下修改 dd 删除当前行 >G 增加从当前行到文档末尾的缩进层级 . 命令是一个微型的宏 2、不要自我重复 对于在行尾添加内容的常见操作,如添加分号,vim提供了合并操作…

vulhub搭建漏洞环境docker-compose up -d命令执行报错以及解决方法汇总

在利用vulhub靶场搭建环境进行漏洞复现时,我们通常要使用这一步命令: docker-compose up -d 但是经常报错,今天我们来说几个常见的报错以及解决方法: 1.报错提示: ERROR: Couldnt connect to Docker daemon at httpdoc…

Vue|mixin混入

目录 mixin混入什么是mixin代码准备如何混入?全局混合 在 Vue 中,混入(Mixins)是一种灵活的分发功能,可以将可复用的代码片段和功能注入到多个组件中。简单来说,混入允许你在多个组件之间共享逻辑,而无需重…

DEPLOT: One-shot visual language reasoning by plot-to-table translation论文阅读

文章链接:https://arxiv.org/abs/2308.01979http://arxiv.org/abs/2212.10505https://arxiv.org/abs/2308.01979 源码链接:https://github.com/cse-ai-lab/RealCQA 启发:two-stage方法可能是未来主要研究方向,能够增强模型可解释…

LeetCode[中等] 142. 环形链表 II

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整…