Maxwell之简介以及安装部署和使用

1.生产主流的大数据实时数据源同步中间件:

主要有Canal和Maxwell,它们都是数据同步工具。

1.1中间件的作用:

Mysql 》Maxwell|Canal》Kafka===》??==》存储端(数仓)HBase|Kudu|Cassandra|Hive
将数据增删改操作实时的同步到另一端。

1.2Canal:
1.3Maxwell:

2.对比选择

  • 工具对比
    http://bigdatadecode.club/实时抓取MySQL的更新数据到Hadoop.html

  • 主要区别:
    1、虽然Maxwell不能直接支持HA,但是它支持断点还原,即错误解决后重启继续上次点儿读取数据。
    2、Canal是服务端,数据过来了并不能直接写出去,需要一个客户端:syncClient去获取数据
    Maxwell即是服务端也是客户端。
    3、Maxwell支持Bootstrap,即刷全量的数据,而Canal不支持。
    4、Maxwell只支持Json,而Canel数据格式自由

  • 个人选择Maxwell:
    a、服务端和客户端是一体的
    b、Maxwell是轻量级的,出错风险低,Canal经常出错
    c、虽然部署的是单台,但是具有断点还原能力,出错好解决
    d、Maxwell代码质量非常好,且社区更加的活跃

3.Maxwell官网解读

官网地址它设计的初衷是实时采集Mysql数据到Kafka,它是Kafka的Producer

  • 支持全表load数据
  • 支持自动断点还原
  • 支持按照列将数据发送到Kafka不同分区

MaxWell将mysql的insert操作转成的json

  mysql> insert into `test`.`maxwell` set id = 1, daemon = 'Stanislaw Lem';
  maxwell: {
    "database": "test",
    "table": "maxwell",
    "type": "insert",
    "ts": 1449786310,
    "xid": 940752,
    "commit": true,
    "data": { "id":1, "daemon": "Stanislaw Lem" }
  }

MaxWell将mysql的update操作转成的json

  mysql> update test.maxwell set daemon = 'firebus!  firebus!' where id = 1;
  maxwell: {
    "database": "test",
    "table": "maxwell",
    "type": "update",
    "ts": 1449786341,
    "xid": 940786,
    "commit": true,
    "data": {"id":1, "daemon": "Firebus!  Firebus!"},
    "old":  {"daemon": "Stanislaw Lem"}
  }

4.Maxwell部署

4.1下载

我这里选择的是1.14.4版本,生产上尽量用较新的版本,此版本坑有点儿多。
1

4.2安装Mysql

省略,可参照我之前的Mysql的tar安装

4.3安装Maxwell
#解压
[hadoop@hadoop001 soft]$ cd ~/soft/
[hadoop@hadoop001 soft]$ tar -zxvf maxwell-1.14.4.tar.gz -C ~/app/

#修改Mysql的配置,将Binlog数据格式改为ROW,Binlog数据格式有三种(ROW、MIXED、Statement)
[hadoop@hadoop001 soft]$ exit 
[root@hadoop001 ~]# service mysql stop
[mysqladmin@hadoop001 ~]$ service mysql status
[root@hadoop001 ~]# vim /etc/my.cnf 
binlog_format = ROW
[root@hadoop001 ~]# su - mysqladmin
[mysqladmin@hadoop001 ~]$ service mysql start

#检测配置是否修改成功
[mysqladmin@hadoop001 ~]$ mysql -uroot -p
mysql> show variables like '%binlog%';

#创建Maxwell的数据库和用户
mysql> create database maxwell;
mysql> CREATE USER 'maxwell'@'%' IDENTIFIED BY 'XXXXXX';
mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'%' IDENTIFIED BY '123456';
mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%';
mysql> flush privileges;


5.快速启动Maxwel

Maxwell支持将binlog数据采集发送到stdout、Kafka、Redist、RabbitMQ、Kinesis、Google Cloud Pub/Sub

5.1stdout producer方式启动Maxwell

以命令行生产生产者方式启动Maxwell,然后mysql插入修改以及删除数据,看控制台有什么反应
*启动

[mysqladmin@hadoop001 ~]$ exit
[root@hadoop001 ~]# su - hadoop
[hadoop@hadoop001 ~]$ cd ~/app/maxwell-1.14.4/
[hadoop@hadoop001 maxwell-1.14.4]$ bin/maxwell --user='maxwell' --password='123456' --host='127.0.0.1' --producer=stdout

插入操作:控制台返回的结果,binglog会记录一整份的数据:

{"database":"test","table":"wsktest","type":"insert","ts":1559224176,"xid":367,"commit":true,"data":{"name":"maxwell1","age":18,"salary":1000}}

更新操作:控制台返回结果,会记录新的一整份数据,同时会显示旧的数据:

{"database":"test","table":"wsktest","type":"update","ts":1559224272,"xid":400,"commit":true,"data":{"name":"maxwell1","age":180,"salary":1000},"old":{"age":18}}

删除操作:控制台返回结果,会记录新的一整份数据:

{"database":"test","table":"wsktest","type":"insert","ts":1559229783,"xid":1406,"commit":true,"data":{"name":"maxwell1","age":18,"salary":1000}}

5.2(重点)Kafka producer方式启动Maxwell

将Mysql的操作binlog数据发送Kafka。

  • 启动
[hadoop@hadoop001 maxwell-1.14.4]$ bin/maxwell --user='maxwell' --password='123456' --host='127.0.0.1' \
--producer=kafka --kafka.bootstrap.servers=localhost:9092 --kafka_topic=maxwell

6.Configuration

http://maxwells-daemon.io/config/ ,这里有所有的Maxwell的相关配置。
要注意kafka_version的支持版本,故我们部署的kafka是有版本要求的,且此参数在命令行修改才是有效的。

  • 默认的配置是在config.properties.example,修改去mv去掉.example
  • 踩坑,有些配置在config.properties修改是无效,必须是命令行
  • 若下载的maxwell的libs下没有想要的Kafka版本的Client,必须将得拷一份
  • filtering可过滤某些表和库,不进行实时同步
  • 在参数设置时注意表明、库名大小写,默认mysql区分数据库名和表名大小写,不区分变量和列名大小写
  • monitoring,对Maxwell进行一些监控
  • misc,可以从指定位置同步数据,若不开启,默认最新的pos位置。如当mysql的position位置在10000,我想从990开始同步数据,

7.maxwell-bootstrap

用于将表全量load的工具,非常的方便

8.changelog

版本的realease notes,没事多看看。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值