Mysql

通過寫入 MySQL 表(而不是流式傳輸到 Kafka/Rabbit/等)來更改 MySQL/PHP 中的數據擷取?

  • August 2, 2019

我有一個使用 PHP 和 MySQL 開發的小型內部 Web 應用程序。我希望通過請求自某個日期以來的所有更改將客戶端網頁同步到伺服器。

我通過 MySQL(Maxwell、Debezium 等)中的第 3 方更改數據擷取庫找到了許多解決方案,但它們似乎都流式傳輸到 Kafka 或類似的東西。這是一個更小、更簡單的項目,沒有任何類型的消息隊列/代理。

我想要的只是將更改記錄在同一個 MySQL 數據庫中的表中,其中包含 CRUD 操作、更改的表、表行 ID 和日期時間等列。然後我可以查詢自某個日期和時間以來更改的所有行。

是否有一種簡單的方法或庫可以將這些資訊直接記錄在同一個 MySQL 數據庫中?

最明顯的解決方案可能是使用觸發器。您可以在相關表的插入、刪除和更新之前/之後觸發觸發器,然後在您的特殊表中記錄更改,包括時間戳和它是什麼類型的寫入操作。

另一種方法是使用審計外掛——MariaDB 的審計外掛適用於至少 5.5 的舊版本 MySQL。MySQL 有Enterprise Audit,它大概有一個專有許可證。這些外掛將記錄到一個文件中,但您可以設置一個 cron 作業或類似的作業以將其載入到數據庫表中。

(使用 MariaDB 10.3+,您將能夠使用系統版本表,這將允許您儲存對行的所有更改。)

引用自:https://dba.stackexchange.com/questions/244269