2011-10-17 129 views

回答

1

如果可行,複製(如Kris所述)可能是您的最佳選擇。但是,我會假設出於某種原因,複製在您的用例中不起作用。尤其是,你提到你需要通過HTTP發送它。我假設你需要沿着每次更新時通過HTTP調用運行在另一臺服務器上的REST服務的方式來做一些事情。如果這是你的用例,複製可能不是一個可行的選擇。

一個選項是觸發器。我不知道MySQL中有一個可用的函數,它允許您直接從觸發器中調用REST服務。另外,我不確定你會想要如何,因爲每次數據庫更新都會大大增加延遲。相反,我建議您添加一個觸發器,每次在您關心的表上進行更新,刪除或插入操作時,都會記錄到本地表中。這將是一個「審計」表。然後,構建一個讀取這些表的批處理進程/ cron作業,並同步調用另一臺服務器上運行的外部REST服務。

另一個選擇取決於用於訪問數據庫的語言。例如,如果您使用的是Java,則可以使用一些「代理」JDBC驅動程序,它們可以讓您將代碼注入到任何更新中。

另一種選擇是配置MySQL註銷二進制日誌。然後,您可以解析該二進制日誌,並使用上面建議的batch/cron過程,但不必讀取更新的「audit」表,就可以讀取二進制日誌。再次注意,如果兩個位置的數據庫完全相同,則可以設置複製。如果沒有其他的東西,你應該能夠想出一個進程來獲取二進制日誌到遠程服務器(取決於平臺),在這裏可以恢復二進制日誌。請參閱http://dev.mysql.com/doc/refman/5.0/en/binary-log.html

相關問題