Maxwell安装部署

1 Maxwell输出格式

  • database:变更数据所属的数据库
  • table:变更数据所属的表
  • type:数据变更类型
  • ts:数据变更发生的时间
  • xid:事务id
  • commit:事务提交标志,可用于重新组装事务
  • data:对于insert类型,表示插入的数据;对于update类型,表示修改之后的数据;对于delete类型,表示删除的数据
  • old:对于update类习惯,表示修改之前的数据,只包含变更字段

2.Maxwell部署

2.1 安装Maxwell 

(1)解压安装包

tar -zxvf maxwell-1.29.2.tar.gz -C /opt/module

(2)修改解压后的maxwell名字

mv maxwell-1.29.2/ maxwell

2.2 配置MySQL

2.2.1 判断MySQL是否已经开启binlog

MySQL服务器的Binlog默认是未开启的,如需进行同步,需要先进行开启

SHOW VARIABLES LIKE 'log_bin';

查看MySQL的binlog模式

show global variables like "binlog%";

开启binlog日志

修改  MySQL  的  my.cnf  配置文件

一般默认在  /etc/my.cnf  下

#第一种方式:
#开启binlog日志
log_bin=ON
#binlog日志的基本文件名
log_bin_basename=/var/lib/mysql/mysql-bin
#binlog文件的索引文件,管理所有binlog文件
log_bin_index=/var/lib/mysql/mysql-bin.index
#配置serverid
server-id=1

注:MySQL Binlog模式

Statement-based:基于语句,Binlog会记录所有写操作的SQL语句,包括insert、update、delete等。

优点: 节省空间

缺点: 有可能造成数据不一致,例如insert语句中包含now()函数。

Row-based:基于行,Binlog会记录每次写操作后被操作行记录的变化。

优点:保持数据的绝对一致性。

缺点:占用较大空间。

mixed:混合模式,默认是Statement-based,如果SQL语句可能导致数据不一致,就自动切换到Row-based。

Maxwell要求Binlog采用Row-based模式。

修改完配置后,重启MySQL。

重启MySQL服务

systemctl restart mysqld

执行  SHOW VARIABLES LIKE 'log_bin';   value值为  ON  即可。

2.2.2 创建Maxwell所需数据库和用户

Maxwell需要在MySQL中存储其运行过程中的所需的一些数据,包括binlog同步的断点位置(Maxwell支持断点续传)等等,故需要在MySQL为Maxwell创建数据库及用户。

(1)创建数据库
msyql> CREATE DATABASE maxwell;
(2)更改MySQL数据库密码级别(可选操作)
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=4;
(3)创建Maxwell用户并赋予必要权限
mysql> CREATE USER 'maxwell'@'%' IDENTIFIED BY 'abc';
mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'%';
mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%';

2.3 配置Maxwell

(1)修改Maxwell配置文件

cd /opt/module/maxwell
cp config.properties.example config.properties
vim config.properties#Maxwell数据发送目的地,可选配置有stdout|file|kafka|kinesis|pubsub|sqs|rabbitmq|redis
producer=kafka
#目标Kafka集群地址
kafka.bootstrap.servers=bigdata1:9092,bigdata2:9092,bigdata3:9092
#目标Kafka topic,可静态配置,例如:maxwell,也可动态配置,例如:%{database}_%{table}
kafka_topic=maxwell#MySQL相关配置
host=bigdata1
user=maxwell
password=123456
jdbc_options=useSSL=false&serverTimezone=Asia/Shanghai

3.Maxwell使用

3.1启动Kafka集群

若Maxwell发送数据的目的地为Kafka集群,则需先确保Kafka集群为启动状态。

3.2 Maxwell启停

(1)启动

/opt/module/maxwell/bin/maxwell --config /opt/module/maxwell/config.properties --daemon

(2)停止Maxwell

ps -ef | grep maxwell | grep -v grep | grep maxwell | awk '{print $2}' | xargs kill -9

(3)Maxwell启停脚本

创建启停脚本

        vim mxw.sh

内容

#!/bin/bashMAXWELL_HOME=/opt/module/maxwellstatus_maxwell(){result=`ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | wc -l`return $result
}start_maxwell(){status_maxwellif [[ $? -lt 1 ]]; thenecho "启动Maxwell"$MAXWELL_HOME/bin/maxwell --config $MAXWELL_HOME/config.properties --daemonelseecho "Maxwell正在运行"fi
}stop_maxwell(){status_maxwellif [[ $? -gt 0 ]]; thenecho "停止Maxwell"ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | awk '{print $2}' | xargs kill -9elseecho "Maxwell未在运行"fi
}case $1 instart )start_maxwell;;stop )stop_maxwell;;restart )stop_maxwellstart_maxwell;;
esac

赋予权限

chmod 777 mxw.sh

3.3 增量数据同步

(1)启动Kafka消费者

bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic maxwell

(2)模拟生成数据

java -jar gmall2020-mock-db-2021-01-22.jar

(3)观察Kafka消费者

{"database":"gmall","table":"comment_info","type":"insert","ts":1634023510,"xid":1653373,"xoffset":11998,"data":{"id":1447825655672463369,"user_id":289,"nick_name":null,"head_img":null,"sku_id":11,"spu_id":3,"order_id":18440,"appraise":"1204","comment_txt":"评论内容:12897688728191593794966121429786132276125164551411","create_time":"2020-06-16 15:25:09","operate_time":null}}
{"database":"gmall","table":"comment_info","type":"insert","ts":1634023510,"xid":1653373,"xoffset":11999,"data":{"id":1447825655672463370,"user_id":774,"nick_name":null,"head_img":null,"sku_id":25,"spu_id":8,"order_id":18441,"appraise":"1204","comment_txt":"评论内容:67552221621263422568447438734865327666683661982185","create_time":"2020-06-16 15:25:09","operate_time":null}}

3.4 历史数据全量同步

可能需要使用到MySQL数据库中从历史至今的一个完整的数据集。这就需要我们在进行增量同步之前,先进行一次历史数据的全量同步。这样就能保证得到一个完整的数据集。

3.4.1Maxwell-bootstrap

历史数据的全量同步的命令

/opt/module/maxwell/bin/maxwell-bootstrap --database gmall --table user_info --config /opt/module/maxwell/config.properties

3.4.2 bootstrap数据格式

采用bootsrtap方式同步输出数据格式

{"database": "fooDB","table": "barTable","type": "bootstrap-start","ts": 1450557744,"data": {}
}
{"database": "fooDB","table": "barTable","type": "bootstrap-insert","ts": 1450557744,"data": {"txt": "hello"}
}
{"database": "fooDB","table": "barTable","type": "bootstrap-insert","ts": 1450557744,"data": {"txt": "bootstrap!"}
}
{"database": "fooDB","table": "barTable","type": "bootstrap-complete","ts": 1450557744,"data": {}
}

第一条type为bootstrap-start和最后一条type为bootstrap-complete的数据,是bootstrap开始和结束的标志,不包含数据,中间的type为bootstrap-insert的数据才包含数据。

一次bootstrap输出的所有记录的ts都相同,为bootstrap开始的时间。

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

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

相关文章

无人机数据链技术,无人机数据链路系统技术详解,无人机数传技术

早期的无人机更多的为军事应用服务,如军事任务侦查等,随着技术和社会的发展,工业级无人机和民用无人机得到快速的发展,工业级无人机用于农业植保、地理测绘、电力巡检、救灾援助等;民用无人机用于航拍、物流等等领域。…

美国Mercari煤炉注册教程,还不快来Get!

想要掘金全球电商市场,美国的Mercari平台绝对值得关注。Mercari,也被称作煤炉,类似于我们国内的闲鱼二手交易平台,它同时拥有美国和日本两个市场。其中,美国市场的消费需求稳定且持续增长,成为了许多跨境电…

医卫医学试题及答案,分享几个实用搜题和学习工具 #笔记#笔记#微信

收录了大量考试类型的题库,大到考公,小到知识竞赛,题库资源算是比较丰富的了。操作起来也不难,我们只需输入题目内容,即可快速搜索出答案,而且它在给出答案的同时还会附带解析。最重要的是,搜题…

​LeetCode解法汇总105. 从前序与中序遍历序列构造二叉树

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给定两个整…

2024年【N1叉车司机】考试题及N1叉车司机新版试题

题库来源:安全生产模拟考试一点通公众号小程序 N1叉车司机考试题是安全生产模拟考试一点通总题库中生成的一套N1叉车司机新版试题,安全生产模拟考试一点通上N1叉车司机作业手机同步练习。2024年【N1叉车司机】考试题及N1叉车司机新版试题 1、【多选题】…

【Linux系统化学习】动静态库 | 软硬链接

目录 硬链接和软链接 硬链接 软链接 动态库和静态库 静态库 静态库的生成 静态库的使用 将库打包和使用 动态库 动态库的生成 动态库的使用 库搜索路径 硬链接和软链接 硬链接 上篇文章我们说到真正找到磁盘上的文件并不是文件名,而是inode。其实在…

Day 6.文件属性和权限的获取

时间获取 1.time time_t time(time_t *tloc); 功能: 返回1907-1-1到现在的秒数(格林威治时间) 参数: tloc:存放秒数空间的首地址 返回值: 成功返回秒数 失败返回-1 2.localtime struct tm *loca…

Python入门:常用模块—logging模块

logging日志的分级: debug(),info(),warning(),error(),critical() 5个级别 最简单用法 1 2 3 4 import logging logging.warning("user [mike] attempted wrong password more than 3 times") logging.critical("server is down") 输出&…

普中51单片机学习(二)

51单片机介绍 所需基础知识 基础数模电知识,简单的C语言。 PS:如果有不懂的直接通义千问。。。 什么是单片机 在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。 学习方法 多实…

Sqoop 入门基础

简介 Sqoop(SQL to Hadoop)是一个开源工具,用于在关系型数据库和Hadoop之间传输数据。它提供了一种快速高效的方式,将数据从关系型数据库导入到Hadoop集群进行分析,并支持将Hadoop集群中的数据导出到关系型数据库中。本…

智慧社区管理系统:构建未来的生活模式

在这个信息化、智能化的时代,我们期待的不再是简单的居住空间,而是一个集安全、便捷、舒适、环保于一体的智能化社区。为此,我们推出了全新的智慧社区管理系统,旨在将先进的科技力量引入社区管理,为居民提供更优质的生…

OpenProject + Rocky8安装

文章目录 1、概要2、整体架构流程3、准备4、安装5、openproject 配置5.1、第一步:OpenProject 版本选择5.2、第二步:PostgreSQL 支持5.3、第三步:Apache2 Web 服务器支持5.4、第四步:hostname 支持5.5、 第五步:服务器…

【Docker】Docker存储卷

文章目录 一、什么是存储卷二、为什么需要存储卷三、存储卷分类四、管理卷Volume创建卷方式一:Volume 命令操作方式二:-v 或者--mount 指定方式三:Dockerfile 匿名卷 操作案例Docker 命令创建管理卷Docker -v 创建管理卷Docker mount 创建管理…

unity学习(32)——跳转到角色选择界面(父子类问题)

新问题 应该是两个脚本之间缺少继承关系 its children 解决起来很简单,把ResceneScript也绑到canvas上就可以了 。 此时,在账号密码正确的情况下,是可以完成场景切换。 对应的代码如下: TMP_Text d GameObject.FindWithTag(&…

接口测试(postman/jmeter)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是接口测试 通常做的接口测试指的是系统对外的接口&am…

Window部署Nacos

Nacos 现在压缩包解压后,修改conf/application.properties 文件 取消注释,修改mysql连接方式 节点nacos.core.auth.enabled 改成true 设置节点nacos.core.auth.server.identity.key、nacos.core.auth.server.identity.value 设置secret秘钥,…

十大常见web漏洞及防范

十大常见web漏洞 一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的S…

javascript选择器大全

目录 1.getElementsByTagName 2.getElementsByName 3.getElementById 4.getElementsByClassName 5.querySelector 6.querySelectorAll 1.getElementsByTagName 俗称标签选择器&#xff0c;可以根据标签名查找匹配到页面的元素对象&#xff0c;返回为一个数组。 <div&…

如何使用静态住宅ip代理进行Facebook群控?

在进行Facebook群控时&#xff0c;ip地址的管理是非常重要的&#xff0c;因为Facebook通常会检测ip地址的使用情况&#xff0c;如果发现有异常的使用行为&#xff0c;比如从同一个ip地址频繁进行登录、发布内容或者在短时间内进行大量的活动等等&#xff0c;就会视为垃圾邮件或…

springcloud-远程调用

微服务的远程调用 RestTemplate 在项目中&#xff0c;当我们需要远程调用一个 HTTP 接口时&#xff0c;我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类。 实例化RestTemplate 创建配置类&#xff0c;实例化RestTemplate Configuration public clas…