假設許多傳統的LAMP風格的應用程序使用MySQL作爲後端來記錄應用程序的「當前持久狀態」。MySQL中的審計狀態更改
我有興趣在數據庫級建立轉換的「審計」並將它們存儲爲日誌。這個想法是 - 假設MySQL數據庫在一天的初始階段已經被「傾銷」,那麼就有可能在備份期間「重放」事務以恢復任何狀態......有點像時間機器的MySQL - 我猜。
我發現了一些關於「審計插件」的文檔,這些文檔看起來很相關,但給我留下了更多的問題而不是答案。
http://dev.mysql.com/doc/refman/5.6/en/writing-audit-plugins.html
從本質上講,我想,以確定是否這將是寫一個MySQL插件來實現我的目標是可行的 - 例如,它將工作「無縫」與現有的MySQL應用程序?
我發現很難確定的主要細節是這樣的:當audit-plugin被通知事件時,爲了記錄它而建立新數據的機制是什麼?數據類型如何編碼?例如,編寫一個工具來重新使用mysqldump對「完整系統備份」進行審計是多麼困難?
這樣的插件是否有任何現有的例子?
二進制日誌無疑是相關的......但是......我希望能夠針對每個「事務數據」做一些事情......而不是將它寫入文件。這些「二進制日誌」是否具有文檔格式?有沒有辦法掛鉤新事務已被記錄在二進制日誌中的事件? – aSteve
除了知道時間並能夠看到SQL語句之外,我希望能夠記錄源自應用程序的高級標籤...例如「刪除聯繫人」 - 而不是必須從SQL中對其進行反向工程。 – aSteve
@aSteve:有些工具(如[mysqlbinlog](http://dev.mysql.com/doc/en/mysqlbinlog.html))可以爲您解析二進制日誌並提取可能感興趣的數據。如果你想自己解析它,完整格式[記錄在Internals手冊中](http://dev.mysql.com/doc/internals/en/binary-log.html)。選擇重播哪些交易對我來說聽起來很可怕,但即使如此,我仍然確信現有的工具可以幫助並防止您不得不推出自己的產品(帶來所有必要的陷阱)。 – eggyal