2010-06-21 24 views
0

在我的系統中,我們執行操作,爲了報告起見,我們將該操作記錄在另一臺服務器上(如果它感興趣,則使用星型模式)。 很明顯,我需要動作更新/插入與日誌記錄在同一個事務中。
那麼,有沒有辦法在同一個事務中包含兩個不同的sqls到兩個不同的服務器?
現在我管理,在代碼級別(PHP)有沒有辦法讓幾個SQL在同一個事務裏面分散服務器?

回答

0

這是不可能單獨使用的MySQL。儘管MySQL有一個Federated Storage Engine(即:遠程訪問其他MySQL服務器),但它不支持事務。這意味着你不能直接通過MySQL協調多服務器事務。 MySQL支持XAfor InnoDB tables,所以你可以在MySQL中使用外部事務管理器,但PHP不支持XA。通常這被認爲是企業級功能,你可以使用JavaC#/.NET來實現。

0

複雜的方法是:

  1. 同一臺服務器上創建相同的表。
  2. 使這個服務器主
  3. 設置副本的這個表

,如果你想要的日誌表是不是很大,你可以這樣做:

  • 第一表名稱設置_tmp
  • 創建從屬log_tmp觸發器插入並更新以將數據複製到日誌表
  • 經過一段時間後從master_log中刪除一些數據。
  • 相關問題