2012-09-15 74 views
0

假設許多傳統的LAMP風格的應用程序使用MySQL作爲後端來記錄應用程序的「當前持久狀態」。MySQL中的審計狀態更改

我有興趣在數據庫級建立轉換的「審計」並將它們存儲爲日誌。這個想法是 - 假設MySQL數據庫在一天的初始階段已經被「傾銷」,那麼就有可能在備份期間「重放」事務以恢復任何狀態......有點像時間機器的MySQL - 我猜。

我發現了一些關於「審計插件」的文檔,這些文檔看起來很相關,但給我留下了更多的問題而不是答案。

http://dev.mysql.com/doc/refman/5.6/en/writing-audit-plugins.html

從本質上講,我想,以確定是否這將是寫一個MySQL插件來實現我的目標是可行的 - 例如,它將工作「無縫」與現有的MySQL應用程序?

我發現很難確定的主要細節是這樣的:當audit-plugin被通知事件時,爲了記錄它而建立新數據的機制是什麼?數據類型如何編碼?例如,編寫一個工具來重新使用mysqldump對「完整系統備份」進行審計是多麼困難?

這樣的插件是否有任何現有的例子?

回答

0

你只是想MySQL的Point-in-Time (Incremental) Recovery Using the Binary Log

點及時恢復是指由於給定的時間點進行數據更改恢復。通常,這種類型的恢復是在恢復完整備份後執行的,該備份會將服務器恢復到備份完成時的狀態。 (全備份可以通過多種方式進行,如在Section 7.2, 「Database Backup Methods」上市。)點及時恢復則會使服務器最新增量從完整備份的時間更近的時間

+0

二進制日誌無疑是相關的......但是......我希望能夠針對每個「事務數據」做一些事情......而不是將它寫入文件。這些「二進制日誌」是否具有文檔格式?有沒有辦法掛鉤新事務已被記錄在二進制日誌中的事件? – aSteve

+0

除了知道時間並能夠看到SQL語句之外,我希望能夠記錄源自應用程序的高級標籤...例如「刪除聯繫人」 - 而不是必須從SQL中對其進行反向工程。 – aSteve

+0

@aSteve:有些工具(如[mysqlbinlog](http://dev.mysql.com/doc/en/mysqlbinlog.html))可以爲您解析二進制日誌並提取可能感興趣的數據。如果你想自己解析它,完整格式[記錄在Internals手冊中](http://dev.mysql.com/doc/internals/en/binary-log.html)。選擇重播哪些交易對我來說聽起來很可怕,但即使如此,我仍然確信現有的工具可以幫助並防止您不得不推出自己的產品(帶來所有必要的陷阱)。 – eggyal