Skip to content

Maxwell部署

1. 安装Maxwell

maxwell-1.29版本之后不再支持jdk8, 所以直接下载maxwell-1.29.2.tar.gz, 并上传到/opt/software/目录下:

sh
[jack@hadoop102 software]$ ll
总用量 2061028
-rw-rw-r--. 1 jack jack  65946879 1月  15 2024 maxwell-1.29.2.tar.gz
[jack@hadoop102 software]$ tar -xvf maxwell-1.29.2.tar.gz -C ../module

2. 配置Mysql

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

sh
vim /etc/my.cnf
[mysqld]
#数据库id
server-id = 1
#启动binlog,该参数的值会作为binlog的文件名
log-bin=mysql-bin
#binlog类型,maxwell要求为row类型
binlog_format=row
#启用binlog的数据库,需根据实际情况作出修改
binlog-do-db=gmall_v4

重启Mysql服务:

sh
sudo systemctl restart mysqld

3. 创建Maxwell数据库和用户

sh
msyql> CREATE DATABASE maxwell;
mysql> CREATE USER 'maxwell'@'%' IDENTIFIED BY 'maxwell';
mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'%';
## REPLICATION CLIENT: 允许用户监视MySQL复制的状态。
## REPLICATION SLAVE: 允许用户作为复制从服务器连接到主服务器。
mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%';

4. 配置Maxwell

sh
[jack@hadoop102 software]$ cd /opt/module/maxwell-1.29.2/
[jack@hadoop102 maxwell-1.29.2]$ cp config.properties.example config.properties
[jack@hadoop102 maxwell-1.29.2]$ vim config.properties
## 配置文件内容如下:
# Maxwell数据发送目的地,
# 可选配置有stdout|file|kafka|kinesis|pubsub|sqs|rabbitmq|redis
producer=kafka
# 目标Kafka集群地址
kafka.bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092
# 目标Kafka topic,可静态配置,
# 例如:maxwell,也可动态配置,例如:%{database}_%{table}
kafka_topic=topic_db

# MySQL相关配置
host=hadoop104
user=maxwell
password=maxwell
port=3307
jdbc_options=useSSL=false&serverTimezone=Asia/Shanghai

5. 编写启停脚本mxw.sh

在用户目录下的bin目录下面创建mxw.sh

sh
#!/bin/bash

MAXWELL_HOME=/opt/module/maxwell-1.29.2

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

赋予可执行权限:

sh
[jack@hadoop102 bin]$ chmod +x mxw.sh