DockerCompose方式部署Canal

Canal

Canal 简介

主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。

canal的工作原理就是把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送binary log给canal,然后canal解析binary log,再发送到存储目的地,比如MySQL,Kafka,Elastic Search等等。

canal的数据同步不是全量的,而是增量。基于binary log增量订阅和消费
原理:
Canal-Server监听MySQL Binlog
Canal-Adapter将数据同步到其他数据库
在这里插入图片描述

前提条件

  1. mysql开启Binlog,并且为ROW模式
  2. 使用canal连接MySQL的用户需要拥有对应的从站等权限
  3. MySQL与ES同步的表需要提前将表结构手动同步到ES结构中
    注意:canal是增量同步,对旧数据推荐使用CloudCanal工具进行一键同步

成功部署后我所挂载的Canal server与adapter的目录结构

在这里插入图片描述

DockerCompose部署Mysql开启Binlog

Yaml文件配置

mysql:
    image: mysql:5.7.27 # 此处镜像使用mysql5
    container_name: container-mysql # 容器名称
    restart: always # 重启方式
    privileged: true
    environment:
      TZ: Asia/Shanghai
      LANG: C.UTF-8
      MYSQL_ROOT_PASSWORD: 此处为MySQL Root账号密码
      MYSQL_DATABASE: 数据库名称
      MYSQL_USER: 用户名
      MYSQL_PASSWORD: 密码
    command: 
      --server_id=100 #主站ID
      --log-bin=/var/lib/mysql/mysql-bin #开启binlog的文件名
      --sync_binlog=1
      --binlog-ignore-db=mysql
      --binlog_format=ROW # binlog格式为ROW
      --expire_logs_days=7 # binlog文件存活时间
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值