zoukankan      html  css  js  c++  java
  • mysql的maxwell的使用

    只有mysql 可以使用此功能。

    注意:此功能只有mysql可以使用。 阿里的canal也可以实现此功能,但是我用起来问题有点多。
    postgresql也有类似的功能,但是不使用的此软件。可以自己查找pg_recvlogical test_decoding wal2json pgcat Logical Decoding 和最新的PgOutput。postgresql基本都是用插件实现。
    sqlserver 的工具有debezium 但是没有测试。其实只要实现cdc功能就可以了。参考 https://www.cnblogs.com/wang2650/p/14367008.html

    maxwell官方文档 地址http://maxwells-daemon.io/quickstart/

    实现的功能
    当你插入修改或删除记录的时候,maxwell会输出如下结果。这样你就会知道数据库每一条记录的增加 修改 和删除变化,并知道记录在修改前和修改后的值。
    以前同样的功能,一般都是在执行sql的部分来实现。比如记录执行的sql语句,或者跟踪实体的值变化。但是是有问题,比如执行批量的修改 update tb set a=1 where id>3 你就无法知道修改了哪些记录。因为id大于3的记录是不固定的。除非你获取每一条的记录,然后逐行修改。
    结果如下

    mysql> insert into `test`.`maxwell` set id = 1, daemon = 'Stanislaw Lem';
      maxwell: {
        "database": "test",
        "table": "maxwell",
        "type": "insert",
        "ts": 1449786310,
        "xid": 940752,
        "commit": true,
        "data": { "id":1, "daemon": "Stanislaw Lem" }
      }
    
      mysql> update test.maxwell set daemon = 'firebus!  firebus!' where id = 1;
      maxwell: {
        "database": "test",
        "table": "maxwell",
        "type": "update",
        "ts": 1449786341,
        "xid": 940786,
        "commit": true,
        "data": {"id":1, "daemon": "Firebus!  Firebus!"},
        "old":  {"daemon": "Stanislaw Lem"}
      }
    

    docker下控制台输出结果

    一 mysql的部分

    1开启逻辑复制功能

    [mysqld]
    server_id=1
    log-bin=master
    binlog_format=row
    

    2设置用来复制的账号,用户名maxwell 密码xxxxxx

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

    需要注意的是,mysql的日志的部分,记得设置日志的大小和过期时间。防止生成太多的日志,占满磁盘。 日志大小默认好像是500m,日期和大小最好显式的设置一下。

    maxwell的使用

    1 命令行方式
    输出到控制台

    bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' --producer=stdout  
    

    输出到rabbitmq
    参考地址https://blog.csdn.net/weixin_40052298/article/details/109464241
    https://blog.csdn.net/xiehd313/article/details/81289150
    https://www.cnblogs.com/lao-tang/p/11353080.html

    bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' 
        --producer=rabbitmq --rabbitmq_host='rabbitmq.hostname'
    

    输出到redis

    bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' 
        --producer=redis --redis_host=redis.hostname
    

    2 docker
    输出到控制台

    docker run -it --rm zendesk/maxwell bin/maxwell --user=$MYSQL_USERNAME 
        --password=$MYSQL_PASSWORD --host=$MYSQL_HOST --producer=stdout
    

    输出到kafka
    参考https://blog.csdn.net/qq_34285557/article/details/111995014

    docker run -it --rm zendesk/maxwell bin/maxwell --user=$MYSQL_USERNAME 
        --password=$MYSQL_PASSWORD --host=$MYSQL_HOST --producer=kafka 
        --kafka.bootstrap.servers=$KAFKA_HOST:$KAFKA_PORT --kafka_topic=maxwell
    

    其他参考
    https://www.iteye.com/blog/liunancun-2515772
    https://blog.csdn.net/HYESC/article/details/83826611?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control
    3下载地址
    https://github.com/zendesk/maxwell/releases/download/v1.29.2/maxwell-1.29.2.tar.gz


    作者:过错
    出处:http://www.cnblogs.com/wang2650/
    关于作者:net开发做的久而已。十余年时光虚度!
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以邮件:wang2650@163.com  联系我,非常感谢。

  • 相关阅读:
    一般处理程序页ashx 序列化 Json数组
    SQL server 分页
    MySQL 分页
    获取网站的BaseURL
    java学习书籍推荐
    查询并关闭指定端口进程
    ettercap使用
    MS10-046漏洞利用
    MS12-020漏洞利用
    入侵安卓手机
  • 原文地址:https://www.cnblogs.com/wang2650/p/14366063.html
Copyright © 2011-2022 走看看