maxwell数据抓取工具
阅读原文时间:2023年10月16日阅读:1

maxwell是一款开源MySQL数据抓取工具,可以读取MySQL的binlog,然后转换成json并输出到kafka、redis等消息队列中。

  • bin/maxwell,用于增量抓取
  • bin/maxwell-boostrap,用于全量抓取

应用

版本

Addr

MySQL

8.0.33

192.168.3.23:3306

Kafka

2.13_3.4.0

192.168.3.23:9092

Maxwell

1.40.0

安装MySQL

MySQL版本:8.0.33

  1. 修改配置文件,启用binlog和gtid

    log_bin = mysql-bin
    binlog_format = row
    binlog_cache_size = 2M

    server_id = 1
    gtid_mode = on
    enforce_gtid_consistency = on
    log-slave-updates = 1
    binlog-ignore-db = mysql,information_schema,sys,performance_schema
    sync_binlog = 1
    auto_increment_offset = 1
    auto_increment_increment = 2

  2. 开启binlog直接输出SQL语句

    SET GLOBAL binlog_rows_query_log_events=ON;

  3. 配置同步用户

    CREATE USER 'maxwell'@'%' IDENTIFIED BY '123456';
    -- GRANT ALL ON maxwell.* TO 'maxwell'@'%';
    GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON . TO 'maxwell'@'%';

安装JDK

后面的kafka和maxwell都需要java运行环境,本文使用的jdk版本为 openjdk 17.0.2

安装kafka(单节点)

Kafka版本2.13-3.4.0,使用kraft。

  1. 生成uuid

    KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"

  2. 初始化log目录。可修改配置文件config/kraft/server.properties中日志目录路径。

    bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties

  3. 启动。注意修改配置文件config/kraft/server.properties中的监听host地址

    bin/kafka-server-start.sh -daemon config/kraft/server.properties

  4. 创建topic

    bin/kafka-topics.sh --create --topic maxwell --bootstrap-server 127.0.0.1:9092

安装maxwell

  1. 从maxwell的github仓库 https://github.com/zendesk/maxwell 下载release压缩包并解压即可。

  2. 编辑配置文件

    log_level=info

    producer=kafka
    kafka.bootstrap.servers=192.168.3.23:9092

    mysql连接信息

    host=192.168.3.23
    port=3306
    user=maxwell
    password=123456

    过滤库表

    filter= include: test.*

    gtid_mode=true
    output_ddl=true
    kafka_topic=maxwell
    kafka.compression.type=snappy
    kafka.retries=0
    kafka.acks=1

    全量抓取的时候会用到

    client_id=2301

  3. 启动

    nohup ./bin/maxwell --config ./config.properties > ./nohup.log 2>&1 &

  4. 测试。在数据库进行一些增删改操作,观测kafka的topic有没有数据,有数据则正常。

maxwell-bootstrap依赖maxwell实例,运行时需要指定maxwell的实例id。

./bin/maxwell-bootstrap --host='192.168.3.23' --port=3306 --user='root' --password='123456' --database="test" --table="tb1"

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章