我想在某些 mysql(或 mariadb)表(innodb)更新、插入或删除发生时收到通知。
我需要尽快从另一个进程中跟踪这些更改,
我在想也许我可以订阅 mysql 二进制日志?有人可以解释如何做到这一点吗?例如,是否有 mysql 提供的日志读取 API?
当我使用 Galera 集群时,游戏会改变吗?
我想在某些 mysql(或 mariadb)表(innodb)更新、插入或删除发生时收到通知。
我需要尽快从另一个进程中跟踪这些更改,
我在想也许我可以订阅 mysql 二进制日志?有人可以解释如何做到这一点吗?例如,是否有 mysql 提供的日志读取 API?
当我使用 Galera 集群时,游戏会改变吗?
TRIGGER
s 是你的朋友。来自 MySQL 文档:
A trigger is defined to activate when a statement inserts,
updates, or deletes rows in the associated table
请参阅此处的 MySQL-Doc,也有一些示例。
我不知道这是否会对您有所帮助,但我喜欢使用单独的表格来跟踪更改。如果我有一个名为“site_visitors”的表,我将创建另一个名为“site_visitors_log”的表,在将数据插入“site_visitors”后立即写入我需要的信息(IP 地址、时间戳等)。很方便。
您可以使用带有 --stop-never 选项的 mysqlbinlog 来获取所有插入、更新和删除语句(mysqlbinlog 文档)。
您可以使用基于 binlog api的 C++ 库MySQL Replication Listener 。