使用canal通过mysql的binlog日志对mysql进行监控
皮一万。。。
很久以前。。。。。。。。。。。。。。。。很好吃!!!(开玩笑 O(∩_∩)O哈哈~)
正文
前段时间手里有个项目,需要读取 mysql 数据库的 binlog 日志对mysql进行监控,一时间感觉头皮发麻(这个真不会),于是乎询问度娘,度娘直接给出了一个近乎于完整的项目直接就可以使用,那就是 canal 组件。
先来看一下网上对 canal 的说明:点我看原理
下载地址:
开发部署服务:https://github.com/alibaba/canal/releases
开发实例项目:https://github.com/alibaba/canal
说明:我理解的是下载的maven项目只是对逻辑处理的一个项目,而canal 部署开发包是用来启动 canal 服务用的,要使用 canal 对数据库进行监控
①:先配置好 canal 服务,启动服务;②:找到程序的入口,运行
。
一、那么,先来看一下 canal 服务的配置以及启动
下载好的开发服务部署包,直接解压
进入 canal.deployer 这个文件中,能够看到下面的目录结构:
进入 conf 这个文件中,能够看到下面的目录结构:
spring文件夹中的配置文件一般情况下默认即可,如果有特殊的需求可以自行更改。
canal.properties 文件中写的是canal 服务器需要的一些配置,修改的地方不多
example 文件中写的是canal 服务器中配置实例的地方
h2.mv.db 和 meta.dat 是对操作mysql数据库的记录(删除这两个文件不会对mysql数据库中的数据有任何影响,只会对基于canal 服务而开发的项目产生影响,数据缺失),instance.properties 是实例的属性文件
这里有我总结的 canal 监控 mysql 数据库的使用说明:点我下载使用说明
按照步骤配置即可
二、接下来就是开发实例项目了
下载下来的 canal 是一个maven项目,直接将项目导入到 idea 中然后正常配置maven项目就可以
项目中,找到example这个目录,开发的逻辑全都在这里
SimpleCanalClientTest 这个类继承了AbstractCanalClientTest ,成为程序的入口,启动新的线程来读取mysql的binlog日志,进而监控数据库(也可以自己写一个类继承 AbstractCanalClientTest ),在AbstractCanalClientTest 这个类中,有一个process方法,这个方法就是用来监控数据库并处理数据的
实际操作的话,可以同步更新redis缓存、实时更新监控到的某个值的状态、插入到数据库中一条新纪录等等都可以实现了,具体逻辑就要看开发需求了。
至此,我利用 canal 服务监控mysql数据库所学习掌握到的东西就都写完了
引用:http://agapple.iteye.com/blog/1796633
感谢!
结束