登录  /  注册
博主信息
博文 2
粉丝 0
评论 0
访问量 307
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
php使用Canal监听msyql的过程详解
P粉553847993
原创
297人浏览过

这篇文章主要介绍了php使用Canal监听msyql的全过程,文中通过图文和代码示例讲解的非常详细,对大家的学习或工资有一定的帮助,需要的朋友可以参考下
canal需要java8
去官网下载java8
在这里插入图片描述

安装Ja

  1. #创建目录
  2. mkdir -p /usr/local/java/
  3. #解压到目录
  4. tar zxvf jdk-8u411-linux-x64.tar.gz -C /usr/local/java/

配置环境变量在 /etc/profile 最后加入

  1. export JAVA_HOME=/usr/local/java/jdk1.8.0_411
  2. export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  3. export PATH=$PATH:$JAVA_HOME/bin
  4. 使之生效
  5. ```php
  6. source /etc/profile

查看是否安装成功

  1. java -version

设置mysql用户权限

  1. #创建用户名和密码都为 canal 的用户
  2. create user 'canal'@'%' identified by 'canal';
  3. #授予该用户对所有数据库和表的查询、复制主节点数据的操作权限
  4. GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
  5. FLUSH PRIVILEGES; #重新加载权限

修改mysql配置

  1. vim /etc/my.cnf

修改部分内容如下

  1. # 开启 binlog
  2. log-bin=mysql-bin
  3. #master端的ID号,不能和 canal 的 slaveId 重复;
  4. server-id=1
  5. #行级,记录每次操作后每行记录的变化。
  6. binlog-format=row
  7. #指定库,缩小监控的范围。
  8. binlog-do-db=test

查看是否开启主从

  1. show master status;

安装canal

  1. 下载
  2. wget https://github.com/alibaba/canal/releases/download/canal-1.1.7/canal.deployer-1.1.7.tar.gz
  3. #创建canal目录
  4. mkdir -p /usr/local/canal/
  5. #解压到canal目录
  6. tar -zxvf canal.deployer-1.1.7.tar.gz -C /usr/local/canal/

查看canal主配置文件

  1. cat /usr/local/canal/conf/canal.properties

查看会看到暴露了三个端口和指定了一个实例

  1. canal.admin.port = 11110
  2. canal.port = 11111
  3. canal.metrics.pull.port = 11112
  4. #多个实例使用逗号分隔: canal.destinations = example1,example2,
  5. #这里对应/usr/local/canal/conf/example/
  6. canal.destinations = example

canal.destinations:canal能可以收集多个MySQL数据库数据,每个MySQL数据库都有独立的配置文件控制。具体配置规则: conf/目录下,使用文件夹放置,文件夹名代表一个MySQL实例。canal.destinations用于配置需要监控数据的数据库。如果是多个,使用,隔开。
修改实例配置文件
修改实例配置

  1. vim /usr/local/canal/conf/example/instance.properties

在文件最后加入

  1. #配置 slaveId ,不能等于 mysql 配置里的 server Id 即可
  2. canal.instance.mysql.slaveId=10
  3. #数据库连接
  4. canal.instance.master.address=127.0.0.1:3306
  5. #数据库账号密码
  6. canal.instance.dbUsername=canal
  7. canal.instance.dbPassword=canal
  8. #代表数据库的编码方式
  9. canal.instance.connectionCharset = UTF-8
  10. #设置白名单,这里是监控test库下所有表
  11. canal.instance.filter.regex=test\\..*
  12. #设置黑名单,这里设置排除test库下以_noc结尾的表
  13. canal.instance.filter.black.regex=test\\..*_noc

这个正则表达式 test.*_noc 的含义是:

  1. test:精确匹配字符串 "test"
  2. \\.:匹配一个点(.),因为点在正则表达式中有特殊含义,所以需要使用 \\ 进行转义。
  3. *:匹配零个或多个任意字符。
  4. _noc:精确匹配字符串 "_noc"
  5. 因此,这个正则表达式可以用来匹配所有以 test. 开头且以 _noc 结尾的字符串。在 Canal 的配置中使用这个正则表达式,就可以实现排除以 test. 开头且以 _noc 结尾的数据库和表,而监控其他数据库和表。

比如我们要查询 test库下users表id为3的用户信息,sql语句可以这么写
SELECT * FROM test.users WHERE id = 3;
这里的test.users就是正则要匹配的地方

  1. 如果系统是1 cpu,需要将 canal.instance.parser.parallel 设置为 false

启动和停止

启动

  1. /usr/local/canal/bin/startup.sh
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学