2

我想在某些 mysql(或 mariadb)表(innodb)更新、插入或删除发生时收到通知。

我需要尽快从另一个进程中跟踪这些更改,

我在想也许我可以订阅 mysql 二进制日志?有人可以解释如何做到这一点吗?例如,是否有 mysql 提供的日志读取 API?

当我使用 Galera 集群时,游戏会改变吗?

4

3 回答 3

1

TRIGGERs 是你的朋友。来自 MySQL 文档:

A trigger is defined to activate when a statement inserts, 
updates, or deletes rows in the associated table

请参阅此处的 MySQL-Doc,也有一些示例。

于 2014-10-17T05:38:54.797 回答
1

我不知道这是否会对您有所帮助,但我喜欢使用单独的表格来跟踪更改。如果我有一个名为“site_visitors”的表,我将创建另一个名为“site_visitors_log”的表,在将数据插入“site_visitors”后立即写入我需要的信息(IP 地址、时间戳等)。很方便。

于 2014-10-21T13:38:42.923 回答
1

您可以使用带有 --stop-never 选项的 mysqlbinlog 来获取所有插入、更新和删除语句(mysqlbinlog 文档)。

您可以使用基于 binlog api的 C++ 库MySQL Replication Listener 。

于 2014-10-22T15:36:26.470 回答