首页 > 其他分享 >数据订阅与消费中间件Canal 服务搭建(docker)

数据订阅与消费中间件Canal 服务搭建(docker)

时间:2024-10-01 10:21:46浏览次数:3  
标签:Canal canal log MySQL 中间件 server mysql docker

  1. MySQL Bin-log开启
  • 进入mysql容器 docker exec -it mysql5.7 bash
  • 开启mysql的binlog cd /etc/mysql/mysql.conf.d
  • vi mysqld.cnf #在文件末尾处添加如下配置(如果没有这个文件就创建一个)
    [mysqld]
    # 开启 binlog
    log-bin=mysql-bin
    #log-bin=/var/lib/mysql/mysql-bin    #或者配置绝对路径
    # 选择 ROW 模式
    binlog-format=ROW
    # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
    server-id=999

  • 创建账号并授权
    #授权canal链接MySQL,账号具有作为MySQL slave的权限, 如果已有账户可直接 grant。
    create user canal@'%' IDENTIFIED by 'canal';
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%';
    FLUSH PRIVILEGES;

  • 重启mysql并查看
    docker restart mysql5.7
    show variables like '%log_bin%'

  1. Canal安装
    docker pull canal/canal-server                                        #拉取镜像,最新版本
    docker run -p 11111:11111 --name canal -d docker.io/canal/canal-server        #运行容器
    配置canal-server
    docker exec -it canal bash
    vi canal-server/conf/canal.properties               #将它的canal.id属性修改成和mysql数据库中server-id不同的值
    vi canal-server/conf/example/instance.properties    #配置要监听的数据库服务地址和监听数据变化的数据库以及表

    canal.instance.master.address=192.168.10.100:3306    #监听的数据库
    canal.instance.filter.regex=seckill_goods.tb_sku     #监听的表
    
    mysql 数据解析关注的表,Perl正则表达式.
    多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\) 
    常见例子:
    1.  所有表:.*   or  .*\\..*
    2.  canal schema下所有表: canal\\..*
    3.  canal下的以canal打头的表:canal\\.canal.*
    4.  canal schema下的一张表:canal.test1
    5.  多个规则组合使用:canal\\..*,mysql.test1,mysql.test2 (逗号分隔)
    注意:此过滤条件只针对row模式的数据有效(ps. mixed/statement因为不解析sql,所以无法准确提取tableName进行过滤)

    查看日志

    docker exec -it canal -bash
    tail -f  canal-server/logs/example/example.log

    注意,如果连接的是mysql8.x,会报如下错误:

    Caused by: java.io.IOException: caching_sha2_password Auth failed

    解决办法是参考:

    caching_sha2_password 是 MySQL 8.0 引入的默认认证插件,替代了之前的 mysql_native_password。当客户端使用旧的认证机制尝试连接到 MySQL 服务器时,就可能出现 “auth failed” 错误。
    解决:
    mysql> ALTER USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY 'canal';
    mysql> FLUSH PRIVILEGES;

标签:Canal,canal,log,MySQL,中间件,server,mysql,docker
From: https://blog.csdn.net/qq_27683317/article/details/142662910

相关文章

  • 分布式消息中间件
     消息中间件是Java开发消息队列的一种中间件产品。中间件类似windows编程开发中的插件。工具插件在软件工具中是中间插件。插件也是应用程序。消息的分发过程包装之后是chatlog系统或者是手机短信。系统与系统之间的通信通过消息的发送和接收。堆积频繁过多的系统通知消息需要......
  • 掌握RocketMQ消息中间件——基本概念和系统架构篇
    简述RcoketMQ概念:RocketMQ是一个开源的分布式消息中间件,由阿里巴巴开发并贡献给Apache软件基金会。它用于处理高吞吐量、低延迟的消息传递,并广泛应用于现代分布式系统中。1 基本概念1.1消息 (Message)    概念:消息是信息传递的物理载体,生产和消费数据的最小单位,......
  • Docker教程
    目录Docker教程一、安装Docker二、镜像操作三、容器操作四、run细节五、保存镜像六、分享镜像三、docker构建Docker教程简单介绍:一、安装Docker用ubuntu系统来做演示删除系统里面原有的镜像forpkgindocker.iodocker-docdocker-composedocker-compose-v2podma......
  • 安装docker
    docker安装更新包管理器sudoapt-getupdate安装依赖包sudoapt-getinstall\ca-certificates\curl\gnupg\lsb-release添加Docker的官方GPG密钥sudomkdir-p/etc/apt/keyringscurl-fsSLhttps://download.docker.com/linux/ubuntu/......
  • Docker入门实践(五)
    什么是容器?定义容器是每个应用组件的独立进程,它完全和你机器的其他东西隔离。独立性:每个容器包含所有它需要的功能,不依赖于主机上预安装的依赖项。隔离行:由于容器是隔离运行的,它们对主机和其他容器的影响最小,增加了应用的安全性。独立性:每个容器独立管理,删除一个容器不会......
  • 图解Docker Compose 架构设计分析与全攻略:构建、扩展和管理你的容器(第一部分)
    DockerCompose是Docker官方编排工具,它允许用户通过简洁的YAML文件定义多容器的Docker应用程序。无论是开发者、系统管理员还是DevOps工程师,DockerCompose都能帮助轻松地管理复杂的服务堆栈。通过本文,将深入了解DockerCompose的强大功能和使用场景,探索如何利......
  • docker安装openresty
     一、创建网络dockernetworkcreate-dbridgemy_network 二、拉取镜像dockerpullopenresty/openresty 三、运行临时容器dockerrun-itd--nameopenresty-p80:80--restart=always--netmy_networkopenresty/openresty 四、宿主机创建相应目录mkd......
  • Rocky9.2安装docker-docker-compose
    1.更换阿里云源(不换下载很慢)sed-e's|^mirrorlist=|#mirrorlist=|g'-e's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g'-i.bak/etc/yum.repos.d/rocky-*.repodnfmakecache2.更新系统包sud......
  • php docker image
    QuickreferenceMaintainedby:theDockerCommunity⁠WheretogethelptheDockerCommunitySlack⁠,ServerFault⁠,Unix&Linux⁠,orStackOverflow⁠SupportedtagsandrespectiveDockerfilelinksNote:thedescriptionforthisimageislongerth......
  • 【Linux】Docker下载与使用-nginx
    目录一、Docker介绍     二、Docker结构三、下载Daocker1.在linux上下载docker,执行以下命令即可:2.开启docker3.执行以下操作并进行使用四、在Docker上安装nginx一、Docker介绍             Docker:是给予Go语言实现的开源项目。   ......