2013-05-22 40 views
0

我們正在開發一個使用mysql和php的web應用程序。 在我們的應用程序中,我們希望根據用戶界面的觸發器將我們的本地mysql數據庫與遠程mysql數據庫(運行在不同的主機上)同步。遠程數據庫的mysql增量複製

用戶觸發器是一個網頁的形式,當用戶點擊一個按鈕時,PHP服務器腳本被觸發,應該在後臺執行此同步。

我們打算以簡單的方式做到這一點,打開與遠程和本地數據庫的數據庫連接,並插入行,一次一行。但是遠程數據庫表的大小可能非常高(大到幾百萬條),因此我們需要更高效的解決方案。

有人可以幫助我們與SQL查詢/ PHP代碼,可以做到這一點有效的方式數據庫同步,而不會太多的遠程數據庫的負擔。

在此先感謝

希亞姆

UPDATE 遠程DB是不是在我的控制,所以我不能將其配置爲主機或在其上做任何其他設置。所以這是我的一個主要限制。這就是爲什麼我想用編程方式使用php。我的另一個選擇是從遠程數據塊讀取1000行數據塊並插入本地數據庫。但我想知道是否有更好的方法?

+2

如果MySQL已經具備複製功能,爲什麼要重新發明輪子? –

回答

0

就Master而言,複製的成本是最小的。它基本上是這樣的:

  1. 大師記錄所有(相關)活動到平面日誌文件
  2. 奴隸下載,然後現在這個記錄每一個和本地重放二進制日誌

因此,對Master的影響只是將線性數據寫入日誌文件,再加上一點點帶寬。如果您仍然擔心對主站的影響,您可以在主站和從站之間(在系統級)節制鏈接,或者在低活動時間(通過在適當時間發出STOP/START SLAVE命令)打開鏈接。

我還應該提到,內置複製發生在MySQL引擎內部的低級別。我不認爲你可以通過外部過程取得更好的表現。如果你想完全同步你的本地dtabase,當你點擊這個「同步」按鈕,然後再看看。

如果您可以接受部分同步,那麼您可以讓此按鈕在短時間內恢復複製(例如,START SLAVE爲10次,而STOP SLAVE再次自動;用戶需要再次單擊以獲取更多數據)同步。