快速解决Maxwell连接MYSQL时binlog未打开的烦恼

Maxwell简介

  • Maxwell官网
  • Maxwell是一个开源的MySQL数据库变更数据捕获(CDC)工具,它能够实时捕获MySQL数据库中的数据变更,并将其转化为易于消费的格式,如JSON或AVRO,并将其发送到消息队列(如RabbitMQ、Kafka等)中。
  • Maxwell可以帮助开发人员和数据工程师构建实时数据流和数据管道,以支持实时分析、数据同步、数据集成等应用场景。它提供了简单的配置和扩展性,并且与常见的数据处理工具和框架(如Spark、Flink、Kafka Connect等)兼容,使其易于集成到现有的数据架构中。

Maxwell使用

使用Maxwell,可以按照以下步骤进行设置和配置:

  1. 安装Maxwell:可以从Maxwell的Gitee存储库下载最新版本的二进制文件,或者通过包管理工具(如Homebrew)进行安装。

  2. 配置Maxwell:创建一个配置文件(通常是config.properties),其中包含Maxwell的配置选项。您可以指定MySQL主机和端口、数据库用户名和密码、目标消息队列、表过滤规则等。

  3. 启动Maxwell:使用命令行或系统服务管理工具启动Maxwell。例如,可以使用以下命令启动Maxwell:maxwell --config /path/to/config.properties

  4. 监听MySQL变更:一旦Maxwell启动,它将开始监听MySQL数据库的变更。当有数据插入、更新或删除时,Maxwell将捕获这些变更并将其转发到配置的消息队列中。

  5. 处理变更数据:您可以使用消息队列的消费者来处理Maxwell发送的变更数据。根据您的需求,您可以编写自定义的消费者应用程序来处理数据,或者使用现有的数据处理工具和框架。

通过这些步骤,可以开始使用Maxwell来捕获和处理MySQL数据库的变更数据,从而构建实时数据流和数据管道。

  • 注意,具体的配置和使用方式可能会根据您的环境和需求而有所不同,建议参考Maxwell的官方文档和示例进行更详细的设置和配置。

Maxwell连接MYSQL显示binlog未打开解决

确认mysql容器的binlog是否打开

  • 要确认MySQL容器的binlog是否打开,可以按照以下步骤进行操作:
  1. 进入MySQL容器:使用docker exec命令进入MySQL容器的命令行界面。

    docker exec -it <container_name> bash
    
  2. 进入MySQL命令行界面:使用mysql命令进入MySQL的命令行界面。

    mysql -u <username> -p
    
  3. 查看binlog状态:在MySQL命令行界面中,执行以下命令来查看binlog的状态。

    SHOW VARIABLES LIKE 'log_bin';
    
    • 如果返回结果中的Value为"ON",则表示binlog已经打开;如果返回结果中的Value为"OFF",则表示binlog未打开。
  4. 查看binlog文件位置:执行以下命令来查看当前binlog文件的位置。

    SHOW VARIABLES LIKE 'log_bin_basename';
    
    • 返回结果中的Value即为当前binlog文件的位置。
  • 如果binlog未打开,可以通过修改MySQL配置文件来打开binlog。在MySQL容器中,配置文件一般位于/etc/mysql/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf。找到以下配置项,并确保其值为"ON":
    log_bin = ON
    
  1. 修改完成后,退出mysql容器,重启MySQL容器使配置生效。
    exit
    docker restart <container_name>
    

解决后日志信息解读

2023-06-15 04:49:11 INFO  Maxwell - Starting Maxwell. maxMemory: 431816704 bufferMemoryUsage: 0.25
2023-06-15 04:49:12 INFO  Maxwell - Maxwell v1.40.2 is booting (RabbitmqProducer), starting at Position[BinlogPosition[binlog.000003:24293], lastHeartbeat=1686804505492]
2023-06-15 04:49:12 INFO  MysqlSavedSchema - Restoring schema id 1 (last modified at Position[BinlogPosition[binlog.000002:4762], lastHeartbeat=0])
2023-06-15 04:49:12 INFO  BinlogConnectorReplicator - Setting initial binlog pos to: binlog.000003:24293
2023-06-15 04:49:12 INFO  BinaryLogClient - Connected to mysql:3306 at binlog.000003/24293 (sid:6379, cid:98)
2023-06-15 04:49:12 INFO  BinlogConnectorReplicator - Binlog connected.

根据提供的日志,Maxwell已成功启动并连接到MySQL的二进制日志(binlog)。以下是关于日志的一些重要信息:

  • Maxwell版本:Maxwell版本为1.40.2。
  • 启动时间:Maxwell在2023年6月15日04:49:11开始启动。
  • 内存使用情况:Maxwell的最大内存限制为431816704字节。
  • RabbitMQ生产者:Maxwell使用RabbitMQ作为消息队列,此日志显示Maxwell正在使用RabbitmqProducer。
  • 位置信息:Maxwell使用BinlogPosition[binlog.000003:24293]作为启动时的初始位置。
  • 数据库模式恢复:日志还显示Maxwell正在还原ID为1的数据库模式。此模式在BinlogPosition[binlog.000002:4762]处最后修改。
  • 连接到MySQL Binlog:Maxwell成功连接到MySQL的binlog,binlog文件名是binlog.000003,初始位置是24293。

此日志表明Maxwell成功启动并连接到MySQL的binlog,准备开始获取数据变更并发送到RabbitMQ队列。

你可能感兴趣的:(mysql,java,数据库,MaxWell,docker)