首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以监视MySQL工作台中的任何表更改并自动对其采取行动?

问是否有一种方法可以监视MySQL工作台中的任何表更改并自动对其采取行动?
EN

Stack Overflow用户
提问于 2022-09-09 21:05:28
回答 1查看 44关注 0票数 -2

我有一个由两个完全独立的服务器应用程序共享的数据库,这些应用程序根本无法相互通信。假设这两个应用程序称为A、和B。每当A更新表在共享DB中时,B应该很快就会知道存在某种更改(请记住*A和B不能相互通信)。此外,我希望避免使用setInterval类型的方法,在这种方法中,我每隔x秒查询一次。一开始,我以为会有一种方法来“观察”MySQL内部的变化,但似乎没有。实现这一目标的最佳方法是什么?我正在使用Node.js、MySQL Workbench和PHP。

TDLR:

当检测到更改时,我正试图找到一种“监视”任何表更改和触发操作(可能像http请求)的最佳方法。我正在使用MySQL工作台和Node.js。我真的想避免使用setInterval类型的方法。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2022-09-10 00:12:00

您需要的是更改数据捕获(CDC)功能。在MySQL中,特性是二进制日志。

一些工具(如德贝兹 )用于监视和过滤二进制日志,并将其转换为消息队列中的事件(例如Kafka)。

上面的一些注释建议使用触发器,但这是一个有问题的想法,因为触发器在数据更改期间触发,而该更改的事务尚未提交。如果在触发触发器时尝试调用http请求或任何其他应用程序操作,则即使随后回滚数据更改,也有执行该操作的风险。这会让人很困惑。

此外,也没有一种从触发器运行应用程序操作的好方法。它们用于进行从属数据更改,而不是事务范围以外的操作。

使用二进制日志作为更改的记录更安全,因为更改在提交之前不会写入二进制日志。此外,二进制日志包含对所有表的所有更改。

然而,使用触发器解决方案,您必须为每个表创建三个触发器(插入、更新和删除)。另外,MySQL不支持DDL语句的触发器(创建、更改、删除、截断等)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73667483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档