微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mbinlogmq 基于MySQL binlog的数据同步中间件

程序名称:mbinlogmq

授权协议: BSD

操作系统: Linux

开发语言: C/C++

mbinlogmq 介绍

mbinlogmq 一个基于MysqL binlog协议的数据同步中间件

mbinlogmq一个使用C语言开发的基于 MysqL binlog 协议的一个中间件,通过模拟Slave 来实时获取 MysqL
binlog日志,并将数据变更信息以及 DB 语句发送到 RabbitMQ ,中间通过监听机制与校验机制来确保不宕机的情况下的100%抵达
RMQ

  • mbinlog依赖于一些第三方库:

请先安装依赖软件: cURL 、MysqL、rabbitmq,安装完成后记住其安装的路径,进入下面的步骤

  • 下载mbinlogmq源码

    git clone https://gitee.com/josinli/mbinlogmq.git

  • 修改 CMakeLists.txt,将如下的几行变为您上面安装的路径:

    set(MysqL_INCLUDE /usr/local/MysqL/include) # 您系统的MysqL文件路径
    set(MysqL_LIBRARY_DIR /usr/local/MysqL/lib) # 您系统的MysqL文件路径
    set(CURL_DIR /usr/local/Cellar/curl/7.58.0) # 您系统的curl安装路径

  • 执行编译安装命令

    mkdir build
    cd build
    cmake .. && make && sudo make install

  • 修改 /etc/mbinlogmq/binlog.xml 您的配置信息

    <?xml version=”1.0” encoding=”UTF-8” author=”Josin” date=”2019-07-22”?>




    rabbitmq
    127.0.0.1
    root
    3333
    3306
    6
    1



    127.0.0.1
    guest
    guest
    15672
    1
    amq.default
    Invalid
    fanout
    /

  • 启动您的 minblogmq

    mbinlogmq -k start

此时进入 MysqL 操作,同时登录 RabbitMQ 查看消息是否成功抵达,目前的版本存在一些或多或少的问题,切勿生产环境使用。

mbinlogmq会针对不同的binlog日志生成四种类型的消息,消息类型如下

  • 消息全部为 JSON 格式
  • 格式如下

1、 UPDATE 语句,etype等于 1,包含一个pre对象 和 new对象,分别对应修改之前的数据和新的数据

{
    "etype": 1,
    "data" : {
        "pre": {
            "id":1,
            "ad":2
        },
        "new": {
            "id":1,
            "ad":3
        }
    }
}

2、 INSERT 消息, etype 等于 2

{
    "etype": 1,
    "data" : {
        "id":1,
        "ad":3
    }
}

3、 DELETE 消息, etype 等于 3

{
    "etype": 3,
    "data" : {
        "id":1,
        "ad":3
    }
}

4、 sql 语句 消息, etype 等于 4

{
    etype: 4,
    data: "ALTER TABLE `books`.`test_at` MODIFY COLUMN `cc` datetime(0) NULL DEFAULT NULL AFTER `bb`"
}

示例消息如下:

 [x] Received {"etype":4,"data":"ALTER TABLE `books`.`test_at` \nMODIFY COLUMN `bb` date NULL DEFAULT NULL AFTER `aa`"}
 [x] Received {"etype":4,"data":"ALTER TABLE `books`.`test_at` \nMODIFY COLUMN `bb` date NOT NULL AFTER `aa`"}
 [x] Received {"etype":4,"data":"BEGIN"}
 [x] Received {"etype":1,"data":{"pre":{"id":1,"book_name":"傲世丹神1","book_cover":"http://img.c0m.io/quanben.io/upload/thumbnail/book_0_999/book_1.jpg","add_time":"2019-7-23 14:28:43","author_name":"寂小贼111","introduction":"废柴少年得无上传承,获逆天神脉,学绝世神功,掌握超绝丹术,这使他...","test_date":"2019-7-29"},"new":{"id":1,"book_name":"傲世丹神1","book_cover":"http://img.c0m.io/quanben.io/upload/thumbnail/book_0_999/book_1.jpg","add_time":"2019-7-23 21:47:36","author_name":"寂小贼","introduction":"废柴少年得无上传承,获逆天神脉,学绝世神功,掌握超绝丹术,这使他...","test_date":"2019-7-29"}}}
 [x] Received {"etype":4,"data":"COMMIT"}
 [x] Received {"etype":4,"data":"BEGIN"}
 [x] Received {"etype":1,"data":{"pre":{"id":1,"book_name":"傲世丹神1","book_cover":"http://img.c0m.io/quanben.io/upload/thumbnail/book_0_999/book_1.jpg","add_time":"2019-7-23 21:47:36","author_name":"寂小贼","introduction":"废柴少年得无上传承,获逆天神脉,学绝世神功,掌握超绝丹术,这使他...","test_date":"2019-7-29"},"new":{"id":1,"book_name":"傲世丹神","book_cover":"http://img.c0m.io/quanben.io/upload/thumbnail/book_0_999/book_1.jpg","add_time":"2019-7-23 21:47:54","author_name":"寂小贼","introduction":"废柴少年得无上传承,获逆天神脉,学绝世神功,掌握超绝丹术,这使他...","test_date":"2019-7-29"}}}
 [x] Received {"etype":4,"data":"COMMIT"}

有问题可以及时通过 ISSUE 反馈,反馈地址:GITEE Go Go
Go!!!

mbinlogmq 官网

https://gitee.com/josinli/mbinlogmq

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐