实时

您的位置:首页>资讯 >

大数据Maxwell(二):使用Maxwell增量和全量同步MySQL数据 独家

使用Maxwell增量和全量同步MySQL数据

一、使用Maxwell同步MySQL数据

首先下载Maxwell,Maxwell下载地址:


(相关资料图)

https://github.com/zendesk/maxwell/releases/tag/v1.28.2

现在版本1.30.0版本之上需要jdk11以上,建议下载1.30.0版本以下版本。下载完成后按照如下步骤进行配置,同步MySQL数据到Kafka,前提是MySQL需要开启Binlog日志,可以参考Canal章节设置。Maxwell不支持高可用搭建,但是支持断点还原,可以在执行失败时重新启动继续上次位置读取数据。

1、将下载好的安装包上传到node3并解压

[root@node3 ~]# cd /software/[root@node3 software]# tar -zxvf ./maxwell-1.28.2.tar.gz 

2、在MySQL中创建Maxwell的用户及赋权

Maxwell同步mysql数据到Kafka中需要将读取的binlog位置文件及位置信息等数据存入MySQL,所以这里创建maxwell数据库,及给maxwell用户赋权访问其他所有数据库。

3、修改配置“config.properties”文件

进入“/software/maxwell-1.28.0”,修改“config.properties.example”为“config.properties”并配置:

producer=kafkakafka.bootstrap.servers=node1:9092,node2:9092,node3:9092kafka_topic=maxwell_topic#设置根据表将binlog写入Kafka不同分区,还可指定:[database, table, primary_key, transaction_id, thread_id, column]producer_partition_by=table#mysql 节点host=node2#连接mysql用户名和密码user=maxwellpassword=maxwell

注意:以上参数也可以在后期启动maxwell时指定参数方式来设置。

4、启动zookeeper及Kafka,并监控Kafka maxwell_topic

[root@node2 bin]# cd /software/kafka_2.11-0.11/[root@node2 bin]# ./kafka-console-consumer.sh  --bootstrap-server node1:9092,node2:9092,node3:9092 --topic maxwell_topic

5、启动Maxwell

[root@node3 ~]# cd /software/maxwell-1.28.2/bin[root@node3 bin]# maxwell --config ../config.properties

注意以上启动也可以编写脚本:

#startMaxwell.sh 脚本内容:/software/maxwell-1.28.2/bin/maxwell --config /software/maxwell-1.28.2/config.properties > ./log.txt 2>&1 &

修改执行权限:

chmod +x ./start_maxwell.sh 

6、向MySQL中增删改查写入数据

mysql> create database mysqldb;mysql> use mysqldb;mysql> create table info(id int,name varchar(255),age int);mysql> insert into info values (10,"xx",20);mysql> update info set age = 100 where id = 10;mysql> delete from info where id = 10;#对应Kafka中的消息如下:{"database":"mysqldb","table":"info","type":"insert","ts":1619000098,"xid":3890,"commit":true,"data":{"id":100,"name":"aaa","age":10}}{"database":"mysqldb","table":"info","type":"update","ts":1619000152,"xid":4142,"commit":true,"data":{"id":100,"name":"aaa","age":20},"old":{"age":10}}{"database":"mysqldb","table":"info","type":"delete","ts":1619000183,"xid":4228,"commit":true,"data":{"id":100,"name":"aaa","age":20}}

7、测试Maxwell断点续传

停止Maxwell,向MySQL中插入新的数据,重启Maxwell观察是否从上次消费到的binlog位置继续消费。

#使用kill -9 xxx 命令在node3停止Maxwell#向MySQL继续插入数据mysql> insert into info values (200,"bbb",20);mysql> update info set age = 30 where id = 200;#重新在node3启动Maxwell,可以观察到Kafka中继续上次binlog位置写入数据{"database":"mysqldb","table":"info","type":"insert","ts":1619000378,"xid":4565,"commit":true,"data":{"id":200,"name":"bbb","age":20}}{"database":"mysqldb","table":"info","type":"update","ts":1619000391,"xid":4566,"commit":true,"data":{"id":200,"name":"bbb","age":30},"old":{"age":20}}

二、使用Maxwell Bootstrap全量同步MySQL数据

Maxwell Bootstrap可以将MySQL中已经存在的数据批量同步到Kafka中,操作步骤如下:

1、修改“/software/maxwell-1.28.2/config.properties”配置文件

停止maxwell进程,在当前config.properties配置文件最后一行添加配置“client_id”,此配置项是指定当前maxwell启动后连接mysql的实例id,名字自取,在全量同步数据时需要使用到。

#指定maxwell 当前连接mysql的实例id,名字自取client_id=maxwell_first

2、在mysql中创建库“mysqldb2”,并插入数据

mysql> create database mysqldb2;mysql> use mysqldb2;mysql> create table t1 (id int ,name varchar(255),age int );mysql> insert into t1 values (1,"zs",18),(2,"ls",19),(3,"ww",20);

3、重新启动Maxwell,然后启动maxwell-bootstrap全量导数据

maxwell-bootstrap脚本可以指定MySQL数据库及表参数,同步MySQL指定库下对应表的全量数据,同时可以指定where条件。

[root@node3 ~]# cd /software/maxwell-1.28.2/bin#重启maxwell[root@node3 bin]# maxwell --config ../config.properties#同步mysqldb2 .t1表的全量数据[root@node3 bin]# ./maxwell-bootstrap --database mysqldb2 --table t1 --host node2 --user maxwell --password maxwell  --client_id maxwell_first --where "id<=2"

注意:maxwell-bootstrap命令执行后,可以在对应的topic中查看到数据,这里对应的topic是maxwell进程对应config.properties文件中配置的topic。同时maxwell-bootstrap命令指定的client_id 需要与maxwell进行对应的config.properties配置文件中配置的一样。--where是指定条件,只会全量导入满足条件的数据,有了where条件可以使maxwell-bootstrap进程配合maxwell实时同步进程将一张表数据无缝同步到Kafka中。

关键词:

推荐阅读
https: github com zendesk maxwell releases tag v1 28 2

2023-03-22 17:25:33

春季守护行动春游踏青,文明出行春季天气渐暖,人体容易疲乏,而在青海,高原缺氧更加容易使人产生疲劳感。同时,春季是运营生产的旺季,也是

2023-03-22 16:15:15

1、红虫那么小的一条,新钓者很难把它挂钩。2、下面我说说我的挂钩几种办法。3、先把红虫摊开不厚的一层(片),用速杀均匀的

2023-03-22 14:40:54

为做好2023年公开遴选公务员面试资格审查工作,按照《贺州市2023年度公开遴选公务员公告》的有关规定,面试入围人选需提

2023-03-22 12:41:15

同花顺金融研究中心3月22日讯,有投资者向农产品提问,请问公司目前有无海产品(海鲜市场)市场?有无计划开发海洋养殖或海洋打捞产业的合作项

2023-03-22 10:54:47

1、痘坑小的修复首选激光治疗,可以用点阵激光,剥离或非剥离的点阵王都可以修复痘坑。2、一般来说,你可能需要多次治疗。3、

2023-03-22 09:04:17

1、完美生活网手机登录入口完美生活网手机登录入口。2、是手机下载生活网哪个店里的APP。3、就可以上网登录了。本文就为大

2023-03-22 05:54:30

导语:我们在日常生活当中经常会看到以“那非”,“拉非”为结尾的药物,这些药物是从英语音译而来,治疗男性ED的药物类别,所以名称都包含相

2023-03-22 00:50:59

格隆汇3月21日丨中国铝业(02600 HK)公告,于2023年3月21日,经公司第八届董事会第十次会议审议通过,公司全资附属公司中铝山东有限公司( "中铝山东 "

2023-03-21 21:16:07

1、梦到蚯蚓,预示梦者近期的运势一般,这两天的你要注意一下与恋人的交流,你可能会因为太过沉迷自己的世界而忽略对方的存在,如果你坦诚的告

2023-03-21 19:04:57

上海法治报讯(记者胡蝶飞通讯员唐诗)满心欢喜在宠物店挑选了一只软萌的“小可爱”宠物,却是只“星期猫”“星期狗”。不到一个星期,小宠物

2023-03-21 15:10:59

明星这个群体在大家的认知里通常都是不差钱,拍一部影视剧作品或者参加一档综艺就能获得惊人的报酬。随着《妻子的浪漫旅行》热播,大家更加近

2023-03-21 12:56:51

意欲何为?缅甸被绑女店员当晚被放回未交赎金女子竟不是中国人!今天的关注度非常高,直接上了热搜榜,那么具体的是什么情况呢

2023-03-21 10:55:08

芝加哥商品交易所(CME)“美联储观察”工具显示,目前,美联储3月维持利率在4 50%-4 75%区间的概率为26 2%

2023-03-21 08:51:38

甄子丹是中国香港人,杨紫琼虽然是马来西亚人,但她在香港出道,所以她和甄子丹算是“老乡”了。杨紫琼在一个采访中谈到,《瞬息全宇宙》获得

2023-03-21 05:44:34

1、是拒马河的第十个渡口。2、所以叫10度。以上就是【北京十度穿什么衣服,北京十度】相关内容。

2023-03-21 01:22:04

1、就是女主白雪因独特的红发被自己本国王子看上想娶为妾,逃婚途中偶遇邻国王子千,被千所救并跟随他到邻国,努力成为宫廷药剂

2023-03-20 21:39:21

黄金转强屡破前高,美元会一直处于弱势吗?,金价,美债,止盈,止损,黄金,美元,压力区

2023-03-20 19:04:43

1、《花弦月》是当木当泽著作的玄幻小说,由天津人民出版社出版。2、讲述女扮男装的无赖少女花洛奇在寻找爹爹的途中遇见了

2023-03-20 17:08:18

1、MacromediaDreamweaverMX2004介绍:一个可视化的网页设计和网站管理工具,支持最新的

2023-03-20 14:55:18