美文网首页容器
docker安装canal-admin/canal 及使用(监控

docker安装canal-admin/canal 及使用(监控

作者: 炒面Z | 来源:发表于2021-09-17 18:55 被阅读0次

    官方文档地址: https://github.com/alibaba/canal/wiki

    工作原理
    canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议
    MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
    canal 解析 binary log 对象(原始为 byte 流)

    实现场景: canal-admin管理canal,canal读取mysql的增量bin-log数据,发送至kafka,然后服务端消费kafka队列,实现数据监控功能

    1.canal-admin 安装

    canal-admin 官方参考文档 : https://github.com/alibaba/canal/wiki/Canal-Admin-Docker

    # 下载脚本
    wget https://raw.githubusercontent.com/alibaba/canal/master/docker/run_admin.sh 
     
    # 以8089端口启动canal-admin
    sh  run_admin.sh -e server.port=8089 \
             -e canal.adminUser=admin \
             -e canal.adminPasswd=admin
    
    # 指定外部的mysql作为admin的库
    sh  run_admin.sh -e server.port=8089 \
             -e spring.datasource.address=xxx \
             -e spring.datasource.database=xx \
             -e spring.datasource.username=xx 
             -e spring.datasource.password=xx
    
    • run_admin.sh 中封装的是 docker run 的命令
    以下截取run_admin.sh
    cmd="docker run -d -it -h $LOCALHOST $CONFIG --name=canal-admin $VOLUMNS $NET_MODE $PORTS $MEMORY canal/canal-admin"
    echo $cmd
    eval $cmd
    
    • 实际输出的docker命令
    root@picbook-preprod:/opt/kafka/canal# sh  run_admin.sh -e server.port=8089 \
    >          -e canal.adminUser=admin \
    >          -e canal.adminPasswd=admin
    docker run -d -it -h 0 -e server.port=8089 -e canal.adminUser=admin -e canal.adminPasswd=admin --name=canal-admin --net=host -m 1024m canal/canal-admin
    
    • 如果不想使用host的网络模式的话,可以修改sh文件在其中添加端口映射,或者直接运行以下docker run命令
    docker run -d -it -h 0 \
    -e server.port=8089 \
    -e canal.adminUser=admin \
    -e canal.adminPasswd=admin \
    --name=canal-admin \
    -p 8089:8089 \
    -m 1024m canal/canal-admin
    
    • 1.访问 canal-admin, ip:8089
    • 2.在-集群管理-配置主配置文件


      配置zk地址
    主配置1 主配置2 主配置3
    • 2.在-instance管理-配置


      instance管理

    2.canal-server 安装

    官方参考文档: canal-server: https://github.com/alibaba/canal/wiki/Docker-QuickStart

    # 下载脚本
    wget https://raw.githubusercontent.com/alibaba/canal/master/docker/run.sh
    
    root@picbook-preprod:/opt/kafka/canal# sh run.sh -e canal.admin.manager=47.111.29.234:8089 \
    > -e canal.admin.port=11110 \
    > -e canal.admin.port=11110 \
    > -e canal.admin.user=admin \
    > -e canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441 \
    > -e canal.admin.register.cluster=online
    docker run -d -it -h 0 -e canal.admin.manager=47.111.29.234:8089 -e canal.admin.port=11110 -e canal.admin.port=11110 -e canal.admin.user=admin -e canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441 -e canal.admin.register.cluster=online --name=canal-server --net=host -m 4096m canal/canal-server
    
    • 执行sh脚本默认使用host网络模式,如果不想使用docker host网络模式,修改sh文件,或者直接使用以下docker run命令
    # 其中 4ACFE3202A5FF5CF467898FC58AAB1D615029441 是字符 'admin' 在mysql下password函数加密后的字符串结果
    
    docker run -d -it -h 0 -e canal.admin.manager={canal-admin的ip地址}:8089 \
        -e canal.admin.port=11110 \
        -e canal.admin.port=11110 \
        -e canal.admin.user=admin \
        -e canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441 \
        -e canal.admin.register.cluster=online \
        --name=canal-server \
        -p 11110:11110 \
        -p 11111:11111 \
        -p 11112:11112 \
        -p 9100:9100 \
        -m 4096m canal/canal-server
    
    • 运行成功后,canal将自动注册到canal-admin中,在canal-admin web页面中的
      主页/Canal Server/Server 管理 能看到新注册的server

    3.测试

    测试 canal.serverMode=tcp模式下,canal解析bin-log
    执行 https://github.com/alibaba/canal/wiki/ClientExample

    测试 canal.serverMode=kafka 模式下,canal解析bin-log->kafka->java服务端消费者消费
    执行 https://github.com/sunzsh/canaldemo.git

    参考:
    https://github.com/alibaba/canal/wiki
    https://blog.csdn.net/daziyuanazhen/article/details/106098887

    相关文章

      网友评论

        本文标题:docker安装canal-admin/canal 及使用(监控

        本文链接:https://www.haomeiwen.com/subject/aycsgltx.html