大数据-MaxWell

MaxWell的基本介绍

Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。它的常见应用场景有ETL、维护缓存、收集表级别的dml指标、增量到搜索引擎、数据分区迁移、切库binlog回滚方案等。官网(http://maxwells-daemon.io)、GitHub(https://github.com/zendesk/maxwell)

Maxwell主要提供了下列功能:

①:支持 SELECT * FROM table 的方式进行全量数据初始化

②:支持在主库发生failover后,自动恢复binlog位置(GTID)

③:可以对数据进行分区,解决数据倾斜问题,发送到kafka的数据支持database、table、column等级别的数据分区。

④:工作方式是伪装为Slave,接收binlog events,然后根据schemas信息拼装,可以接受ddl、xid、row等各种event。

mysql的binlog介绍

binlog是mysql当中的二进制日志,主要用于记录对mysql数据库当中的数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中,如果后续我们需要配置主从数据库,如果我们需要从数据库同步主数据库的内容,我们就可以通过binlog来进行同步。说白了binlog可以用于解决实时同步mysql数据库当中的数据。

binlog的格式也有三种:STATEMENT、ROW、MIXED 。

STATMENT模式:基于SQL语句的复制(statement-based replication, SBR),每一条会修改数据的sql语句会记录到binlog中。

  • 优点:不需要记录每一条SQL语句与每行的数据变化,这样子binlog的日志也会比较少,减少了磁盘IO,提高性能。
  • 缺点:在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及 user-defined functions(udf)等会出现问题)

基于行的复制(row-based replication, RBR):不记录每一条SQL语句的上下文信息,仅需记录哪条数据被修改了,修改成了什么样子了。

  • 优点:不会出现某些特定情况下的存储过程或function、或trigger的调用和触发无法被正确复制的问题。

  • 缺点:会产生大量的日志,尤其是alter table的时候会让日志暴涨。

混合模式复制(mixed-based replication, MBR):以上两种模式的混合使用,一般的复制使 用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog, MySQL会根据执行的SQL语句选择日志保存方式。因为statement只有sql,没有数据,无法获 取原始的变更日志,所以一般建议为ROW模式)

开启mysql的binlog功能

添加mysql普通用户maxwell

为mysql添加一个普通用户maxwell,因为maxwell这个软件默认用户使用的是maxwell这个用户,进入mysql客户端,然后执行以下命令,进行授权。

mysql -uroot  -p
set global validate_password_policy=LOW;
set global validate_password_length=6;
CREATE USER 'maxwell'@'%' IDENTIFIED BY '123456';
GRANT ALL ON maxwell.* TO 'maxwell'@'%';
GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'maxwell'@'%';
flush privileges;

开启mysql的binlog机制

对于我们的mysql数据库,我们可以开启mysql的binlog功能,通过修改mysql的配置文件来实现开启,修改完配置文件之后,需要重启mysql服务。

node03服务器执行以下命令,开启mysql的binlog,并指定binlog格式设置为ROW。

sudo vim /etc/my.cnf#添加或修改以下三行配置log-bin= /var/lib/mysql/mysql-bin
binlog-format=ROW
server_id=1

node03执行以下命令重启mysql服务:

sudo service mysqld restart

验证mysql服务是否开启

进入mysql客户端,并执行以下命令进行验证

mysql -uroot -p
mysql> show variables like '%log_bin%';

进入/var/lib/mysql目录,查看binlog日志文件

[hadoop@node03 mysql]$ sudo cd /var/lib/mysql
[hadoop@node03 mysql]$ sudo ls

安装max-well实现实时采集mysql数据

下载max-well并上传解压

node03下载max-well安装包,下载地址:

https://github.com/zendesk/maxwell/releases/download/v1.21.1/maxwell-1.21.1.tar.gz

将下载好的安装包上传到node03服务器的/kkb/soft路径下,并进行解压。

cd /kkb/soft
tar -zxf maxwell-1.21.1.tar.gz -C /kkb/install/

修改maxwell配置文件

node03修改maxwell的配置文件

cd /kkb/install/maxwell-1.21.1
cp config.properties.example config.properties
vim config.propertiesproducer=kafka
kafka.bootstrap.servers=node01:9092,node02:9092,node03:9092
host=node03
user=maxwell
password=123456
producer=kafka
host=node03.kaikeba.com
port=3306
user=maxwell
password=123456
kafka.bootstrap.servers=node01:9092,node02:9092,node03:9092
kafka_topic=maxwell_kafka

启动服务

启动zookeeper服务,kafka服务并创建kafka的topic,然后启动maxwell服务,测试向数据库当中插入数据,并查看kafka当中是否能够同步到mysql数据。

创建kafka的topic:

node01执行以下命令创建kafka的topic

cd /kkb/install/kafka_2.11-1.1.0
bin/kafka-topics.sh  --create --topic maxwell_kafka --partitions 3 --replication-factor 2 --zookeeper node01:2181

node01执行以下命令,启动kafka的自带控制台消费者,消费kafka当中的数据,验证kafka当中是否有数据进入。

cd /kkb/install/kafka_2.11-1.1.0
bin/kafka-console-consumer.sh --topic maxwell_kafka --from-beginning --bootstrap-server node01:9092,node02:9092,node03:9092

node03执行以下命令,启动maxwell服务

cd /kkb/install/maxwell-1.21.1
bin/maxwell

插入数据并进行测试

向mysql当中插入一条数据,并开启kafka的消费者,查看kafka是否能够接收到数据

向mysql当中创建数据库和数据库表并插入数据

CREATE DATABASE `test`;
USE `test`;DROP TABLE IF EXISTS `myuser`;CREATE TABLE `myuser` (`id` int(12) NOT NULL,`name` varchar(32) DEFAULT NULL,`age` varchar(32) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert  into `myuser`(`id`,`name`,`age`) values (1,'zhangsan',NULL),(2,'xxx',NULL),(3,'ggg',NULL),(5,'xxxx',NULL),(8,'skldjlskdf',NULL),(10,'ggggg',NULL),(99,'ttttt',NULL),(114,NULL,NULL),(121,'xxx',NULL);

启动kafka的消费者,验证数据是否进入kafka

node01执行以下命令消费kafka当中的数据

cd /kkb/install/kafka_2.11-1.1.0
bin/kafka-console-consumer.sh --bootstrap-server node01:9092,node02:9092,node03:9092 --topic  maxwell_kafka

此博文仅供学习参考,如有错误欢迎指正。

上一篇《大数据-Spark调优(三)》

下一篇《大数据-phoenix》

大数据-MaxWell相关推荐

  1. 大数据-phoenix

    大数据-phoenix 由于Hbase当中的数据查询方式比较单一,查询形式比较固定,所以一般都会对Hbase实现二级索引的开发,通过二级索引去更加方便快速的查询Hbase当中的数据,我们也可以通过ph ...

  2. 2021年大数据Spark(四十二):SparkStreaming的Kafka快速回顾与整合说明

    目录 Kafka快速回顾 消息队列: 发布/订阅模式: Kafka 重要概念: 常用命令 整合说明 两种方式 两个版本API 在实际项目中,无论使用Storm还是SparkStreaming与Flin ...

  3. 大数据生态圈常用组件(二):概括介绍、功能特性、适用场景

    三更灯火五更鸡,正是男儿读书时. 小编整理了一些常用的大数据组件,使用场景及功能特性,希望对后浪有所帮助. 分类 名称 简介 功能特点 使用场景 大数据存储 HDFS HDFS是一个分布式的文件系统, ...

  4. 大数据周会-本周学习内容总结07

    目录 01[hadoop] 1.1[编写集群分发脚本xsync] 1.2[集群部署规划] 1.3[Hadoop集群启停脚本] 02[HDFS] 2.1[HDFS的API操作] 03[MapReduce ...

  5. 大数据架构选型与设计

    大数据架构选型与设计 1.1 如何构建大数据平台? 1.1.1 数据库与ER建模 1.1.1.1 数据库(DataBase) 数据库是按照数据结构来组织.存储和管理数据的仓库,是一个长期存储在计算机内 ...

  6. 大数据【Java开发转大数据学习路线分解】(不断细化ing)

    技术点: 将基础的数仓搭建沉淀成自己的实践方法论 提高大数据实时处理平台的稳定性和高效性 提升自己分析定位及解决问题的能力 既懂得平台开发又懂得算法原理和应用 注重风控系统,监控大数据平台安全 前后端 ...

  7. 大数据时代,数据实时同步解决方案的思考—最全的数据同步总结

    1. 早期关系型数据库之间的数据同步 1).全量同步 比如从oracle数据库中同步一张表的数据到Mysql中,通常的做法就是 分页查询源端的表,然后通过 jdbc的batch 方式插入到目标表,这个 ...

  8. 大数据技术之Canal入门篇

    大数据技术之Canal入门篇 文章目录 大数据技术之Canal入门篇 写在前面 第 1 章 Canal 入门 1.1 什么是 Canal 1.2 MySQL 的Binlog 1.2.1 什么是 Bin ...

  9. 大数据架构:全网最全大数据架构生态

    文章目录 简介 1.数据采集技术框架 2.数据存储技术框架 3.分布式资源管理框架 4.数据计算框架 (1)离线数据计算 5.数据分析技术框架 6.任务调度技术框架 7.大数据底层基础技术框架 8.数 ...

  10. 大数据人群画像技术方案

    1:项目背景 当一个app达到一定的体量,千人千面.个性化营销是每一个app提升留存.付费必备法宝.始终离不开营销利器,用户画像.项目从0到1构建画像体系,由T+1升级为实时.过程中不断的优化画像方案 ...

最新文章

  1. 解决Kali Linux没有声音
  2. HDU 3549 Flow Problem (dinic模版 isap模版)
  3. 强化学习(一)---绪论
  4. linux系统下c语言编程的,Linux操作系统下C语言编程从零开始
  5. java jolt tuxedo_java通过jolt调用tuxedo服务.xls
  6. android发送点击事件,Android 模拟发送事件
  7. web root下放置图片_Apache HTTP存在提权漏洞,威胁共享Web主机安全性
  8. 模型计算机控制器的设计,模型计算机控制器的设计.pdf
  9. python基础知识——文件
  10. GCC编译器的使用方法
  11. 利用SPSS做数据分析①(了解SPSS)
  12. Spring中的AOP原理
  13. matlab的foramt
  14. 转载 关于12360系统的讨论
  15. 开发产品的三个验证阶段
  16. 用计算机解决问题听课笔记,《用计算机解决问题的一般步骤》说课稿
  17. 聘用人员职务犯罪要如何处理
  18. 关于飞鱼U3D主程/高级的招聘
  19. MIME::Base64, encode_base64(), decode_base64()
  20. python作中国地图背景气泡图_excel怎么制作中国地图背景效果的气泡图?

热门文章

  1. Canon600D入手记
  2. 网页游戏开发入门教程三(简单程序应用)
  3. Hanselminutes播客247-从敏捷顾问到John Wilger的敏捷团队成员
  4. IPLOOK 5G核心网重磅升级!网络切片切出5G“大蛋糕”
  5. Windows操作系统发展简史
  6. linux用openssl制作自签名数字证书
  7. uniapp安卓证书在线制作工具
  8. 阿里云网站备案时短信核验遇到问题解决办法
  9. 读书笔记 - Thoughts on interaction design (第二版) - 交互设计沉思录
  10. STM32库函数模板创建