MySQL-如何监控数据库数据信息变化

WP主题讨论 WP主题讨论 主题:1013 回复:2239

MySQL-如何监控数据库数据信息变化

虐人心 发布于 2017-04-01 字数 148 浏览 1396 回复 7

监控某个数据库数据信息,如果发现有数据insert或update,然后触发另一个app,这个app就会来获取数据。无数据app不会来请求,这样的要求如何来实现呢?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(7

清晨说ぺ晚安 2017-10-24 7 楼

既然是直接insert/update,为何不由当前主程序来触发,而需要由数据库去触发?
当前更新数据库程序处理数据库,然后告知app,可以重新获取数据了。

瑾兮 2017-10-19 6 楼

用触发器实施对数据INSERT, UPDATE的监控,将监控到的数据记录到一个表中
写一个守护进程实时监控记录表,发现有新记录就请求你的APP
完成后删除记录表里已处理过的数据 (如果想留备份则将数据写入备份库,然后删除记录表数据);

清晨说ぺ晚安 2017-09-24 5 楼

这样的需求建议在业务层实现,而且更合理一些,insert 和update事件必然有程序到调用,此时可以加入监控app,如果这些操作不是你能知道的,比如合作关系;
如果面向的直接是数据库,可以使用app定期去获取数据库中更新的记录,这个很容易做到,表中存着记录的创建和更新时间便可以统计到。

偏爱自由 2017-08-12 4 楼

可以试试使用 温少主持开发的开源组件 AlibabaTech-druid ,具体特色见
http://www.iteye.com/magazines/90

能够方便的监控并重写底层API 呵呵

偏爱自由 2017-07-31 3 楼

不知道你的数据库是啥,如果是Oracle的话,请直接..分析Oracle的归档日志,能满足你的所有监控数据库的需求。
MySQL:
MYSQL有不同类型的日志文件(各自存储了不同类型的日志)
1.错误日志(The error log):记录了数据库启动、运行以及停止过程中错误信息;
2.ISAM操作日志(The isam log):记录了所有对ISAM表的修改,该日志仅仅用于调试ISAM模式;
3.SQL执行日志(The query log):记录了客户端的连接以及所执行的SQL语句;
4.更新日志(The update log):记录了改变数据的语句,已经不建议使用,由二进制日志替代;
5.二进制日志(The binary log):记录了所有对数据库数据的修改语句;
6.超时日志(The slow log):记录所有执行时间超过最大SQL执行时间(long_query_time)或未使用索引的语句;
分析日志也能获取相关信息.

灵芸 2017-05-13 2 楼

可以使用p6spy这样的开源工具,通过修改其源码,对SQL进行判断,满足条件时进行app调用,这个改起来还是很简单的,不过这个项目很久没人维护了,要是找新项目的话,druid也可以,前者是在调用真实Driver以前执行,后者可以当成个连接池使用。

晚风撩人 2017-04-18 1 楼

建议最好别用触发器,可以在INSERT, UPDATE数据时,打出日志,然后用inotify或者一个守护进程去监控这个日志文件的变化,通知你的APP就行
配置inotify相关的服务可以参考
http://www.51know.info/system_security/inotify.html

输出日志如果不方便修改程序,直接修改mysql的日志配置就行