最近项目上有个需求:一旦MYSQL数据库发生了变化,需要立即通知PHP程序来采取相应的处理。有点类似PHP中的websocket功能,网上还有个开源软件GatewayWorker也不错。但是很多人给我推荐的是阿里巴巴的canal,据说很不错。
Canal的原理是利用Mysql主从备份机制,模拟出一个从数据库进程来接收主数据库发送过来的修改日志;将更新日志信息发送给相关监听的端口,接着程序员根据需求来接收处理。
感觉和我上面的需求一直,于是就去研究了下。搜索出来不少文章来教你如何使用的,但是按照搜来的教程一通操作之后发现遇到了好几个问题,费了不少时间在上面。于是我整理了下把我遇到的问题,发出来仅供你们避坑使用。
我的环境是win10+mysql,按照网上的教程对mysql进行bin日志的开启,这一步很简单的,主要是修改my.ini配置文件!配置完成后,使用命令show master status
查看下,是否已经开启了binlog?
接着就是下载Canal,下载解压后进行配置。配置完成后,来到Canal文件夹下找到bin目录中的startup.bat,这时候你会发现双击之后界面一闪而过,并没有保留在屏幕上。这时候你需要编辑这个文件,在最后一行回车输入:pause 保存之后重新双击打开即可固定在屏幕上了。
这时候,如果有错误你就可以看到提示了。一般这时候,你会发现可能你的机器没有安装Java,这一步baidu下吧。安装完成之后,记得配置环境变量等信息。
再次启动这个.bat文件,可能又会出问题了。再次编辑这个文件,把其中-XX:PermSize=128m
-Dlogback.configurationFile="%logback_configurationFile%"
两句删除后,再次重启。就会出现监听端口9099的提示,到这步就可以了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。