使用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

感谢!

结束

posted @ 2018-06-05 18:51  张木北  阅读(8002)  评论(0编辑  收藏  举报