Maxwell

Maxwell

Maxwell 是由美国Zendesk公司开源,用Java编写的MySQL变更数据抓取软件。它会实时监控MySQL数据库的数据变更操作(包括insert、update、delete),并将变更数据以 JSON 格式发送给 Kafka、Kinesi等流数据处理平台。

1.下载

官网地址:maxwells-daemon.io

下载:https://github.com/zendesk/maxwell/releases/download/v1.29.2/maxwell-1.29.2.tar.gz
注:Maxwell-1.30.0及以上版本不再支持JDK1.8。

//上传,通过MobaXterm软件上传安装包放到已创建目录software
cd /opt/software //切换目录
 
//解压,压缩包修改成自己下载的
tar -zxvf maxwell-1.29.2.tar.gz -C /opt/module/
 
//切换目录
cd /opt/module/
//重命名
[root@hadoop01 module]# mv maxwell-1.29.2/ maxwell

2.配置

启用MySQL Binlog

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

#修改MySQL配置文件/etc/my.cnf
vi /etc/my.cnf

//[mysqld]这一段下方增加如下配置
#数据库id
server-id = 1
#启动binlog,该参数的值会作为binlog的文件名
log-bin=mysql-bin
#binlog类型,maxwell要求为row类型
binlog_format=row
#启用binlog的数据库,需根据实际情况作出修改,监控哪个就加哪个,如果不填会监控全部
binlog-do-db= financial_lease

#重启MySQL服务
systemctl restart mysqld
 创建Maxwell所需数据库和用户
#链接MySQL
mysql -uroot -p000000
#创建数据库
mysql> CREATE DATABASE maxwell;
#创建Maxwell用户,%表示任意ip可远程,一般是localhost本地
mysql> CREATE USER 'maxwell'@'%' IDENTIFIED BY 'maxwell';
#赋予其必要权限,这里是赋予maxwell库的所有权限给maxwell用户
mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'%';
mysql> GRANT SELECT, UPDATE, INSERT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%';

#maxwell用户远程连接MySQL8.0连接问题
mysql> alter user 'maxwell'@'%' identified with mysql_native_password by 'maxwell';
mysql> flush privileges;
配置Maxwell
cd /opt/module/maxwell

#example后缀不生效,重新复制一份config.properties文件
cp config.properties.example config.properties
#修改
vi config.properties
vi /opt/module/maxwell/config.properties


#修改内容
#maxwell默认将监控的数据打包成json发送到kafka里面
producer=kafka
# 目标Kafka集群地址
kafka.bootstrap.servers=hadoop01:9092,hadoop02:9092,hadoop03:9092

#目标Kafka topic,可静态配置,例如:maxwell,也可动态配置,例如:%{database}_%{table}
kafka_topic=topic_db

# MySQL相关配置
host=hadoop01
user=maxwell
password=maxwell
jdbc_options=useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true

# 指定数据按照主键分组进入Kafka不同分区,避免数据倾斜
producer_partition_by=primary_key

 3.启动

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

#启动maxwell
/opt/module/maxwell/bin/maxwell --config /opt/module/maxwell/config.properties --daemon
#停止maxwell
ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | awk '{print $2}' | xargs kill -9
 Maxwell启停脚本
#maxwell启停脚本
vi /bin/mxw.sh

#一下为脚本内容
#!/bin/bash

MAXWELL_HOME=/opt/module/maxwell

status_maxwell(){
    result=`ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | wc -l`
    return $result
}


start_maxwell(){
    status_maxwell
    if [[ $? -lt 1 ]]; then
        echo "启动Maxwell"
        $MAXWELL_HOME/bin/maxwell --config $MAXWELL_HOME/config.properties --daemon
    else
        echo "Maxwell正在运行"
    fi
}


stop_maxwell(){
    status_maxwell
    if [[ $? -gt 0 ]]; then
        echo "停止Maxwell"
        ps -ef | grep com.zendesk.maxwell.Maxwell | grep -v grep | awk '{print $2}' | xargs kill -9
    else
        echo "Maxwell未在运行"
    fi
}


case $1 in
    start )
        start_maxwell
    ;;
    stop )
        stop_maxwell
    ;;
    restart )
       stop_maxwell
       start_maxwell
    ;;
esac

#赋予权限
chmod 777 /bin/mxw.sh
#启动maxwell
mxw.sh start

Maxwell提供了bootstrap功能来进行历史数据的全量同步(初始同步)

/opt/module/maxwell/bin/maxwell-bootstrap --database financial_lease --table business_partner --config /opt/module/maxwell/config.properties

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值