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