MySQL

开启 MySQL binlog

  • 查看是否开启了 binlog

    show variables like ‘log_bin%’;

image.png

  • 如果 log_binOFF ,需要开启
  • my.ini 进行设置

    1. # canal 设置
    2. log-bin=mysql-bin # 开启 binlog
    3. binlog-format=ROW # 选择 ROW 模式
    4. server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
  • 然后重启 MySQL 即可

赋予 canal 登录账号和权限

  • 远端访问权限,账号密码是 canal

    grant select, replication slave, replication client on . to ‘canal’@’%’ identified by ‘canal’;

  • 本地访问权限,账号密码是 canal

    grant select, replication slave, replication client on . to ‘canal’@’localhost’ identified by ‘canal’;

  • 刷新权限

    flush privileges;

查看指令

  1. 查看当前正在记录的日志

    — 主 show master status; — 从 show slave status;

  2. 查看 mysql binlog 模式(要求为ROW模式)

    show VARIABLES like ‘binlog_format’;

  3. 获取 binlog 文件列表

    show binary logs;

  4. 查看指定 binlog 文件的内容

    show binlog events in ‘mysql-bin.000040’;

Canal

  • 解压 Canal Deployer 版本

    配置canal.properties

  • 简单看下 ```json

    canal server 传输端口

    canal.port = 11111

canal.destinations = demo1

  1. <a name="zTs8P"></a>
  2. ### 配置 instance.properties
  3. - 一个可以有多个**实例监听 **MySQL 的 binlog
  4. - 默认是 `example` 实例,如果需要多个,直接拷贝并且修改对应的 `instance.properties` 中的
  5. ```json
  6. canal.mq.topic=demo1

以及 canal.properties 中的

  1. # 多个则需要,连接
  2. canal.destinations = example,demo1
  • 虽然连接的时候实际只要有对应的实例文件夹即可
    • 查看下 /conf/example/instance.properties 的内容,主要有 ```json

      mysql serverId

      canal.instance.mysql.slaveId = 1234

position info

canal.instance.master.address=127.0.0.1:3306 canal.instance.master.journal.name= canal.instance.master.position= canal.instance.master.timestamp= canal.instance.master.gtid=

username/password

canal.instance.dbUsername=canal canal.instance.dbPassword=canal canal.instance.connectionCharset = UTF-8

mq config

canal.mq.topic=example ```

运行

  • bin/start.bat 或者 bin/start.sh