2012-08-30 45 views
1

我在一臺mysql服務器database_masterdatabase_backup中有兩個數據庫。
我想database_backup複製插入或更新爲database_master的所有新數據。
但是有一些數據在database_master上被刪除,database_backup上的數據仍將保留。一臺服務器中的MySQL異步數據庫

我們如何在MySQL中做到這一點?

回答

1

爲了清楚起見,我認爲您需要複製,但不要複製記錄的刪除。這不能用本地複製來完成(既不是行也不是基於語句)。主要原因是如果在主數據庫中刪除了一行然後插入了一行,則新行可能會得到舊行的主鍵。在副本數據庫這將導致一個關鍵衝突。

但是,要執行某種類型的hack審計日誌記錄,可以在slave mysql服務器上爲每個實際的數據庫表創建一個日誌表。例如,如果您有一個表foo,您可以創建相應的foo_logging表。日誌記錄表將包含原始文件中的每一列,再加上一個單獨的自動遞增主鍵。然後,您會在原始表上放置一個觸發器,以將任何新的或更新的記錄的副本插入到相應的記錄表中​​。

+0

你能建議可以做到的mysql應用程序嗎? – GusDeCooL

+1

@GusDeCooL查看我的更新,瞭解黑客解決方案。我不知道有什麼免費系統可以滿足您的需求,但如果沒有各種符合您需要的商業合規審覈解決方案,我會很驚訝。如果不是,他們應該是......如果沒有人在這裏有更好的答案,我會在Percona的網站上打個招呼。 – Ray

1

對於insert和update語句,您可以在database_master表上使用TRIGGER。在觸發器中,您可以將數據插入到database_backup表中。

但是,請注意,這不會是異步的。兩個表中的插入(或更新)將一起成爲一個事務。如果出現問題,兩者都會回滾(在某些情況下這是一件好事)。

對database_master的刪除不會影響database_backup。

相關問題