2014-02-28 81 views
0

我有兩個數據庫位於不同服務器上,需要保持同步。這兩個數據庫都在我的數據庫配置定義,我建立連接這樣:我怎樣才能在$ DB1的「產品」表的全部內容,並在$ DB2同步Codeigniter - 將mysql表同步到不同服務器上的不同數據庫

$DB1 = $this->load->database('master', TRUE); 
$DB2 = $this->load->database('live', TRUE); 

- 我可以只需截斷$ DB2上的表並編寫完整的數據(不雅,並可能導致活動站點上的問題),或者我可以使用codeigniter正確地同步第二個表;根據記錄添加,更新和刪除記錄中的記錄?

我曾嘗試:

$products = $DB1->from('products')->get()->result_array(); 

$count = count($products); 

for($i = 0 ; $i < $count; $i++) 
{ 
    $q = $DB2->from('products')->where('id', $products[$i]['id'])->get(); 

    if($q->num_rows() > 0) 
    { 
      [Update the data] 
    } 
    else 
    { 
      [Insert the data] 
    } 
} 

但是這種方法沒有考慮到其中存在於已經從$ DB1刪除$ DB2賬戶記錄?我更喜歡這種更新產品的方法,但不能在實況網站上使用喪偶產品。

+1

爲什麼不建立一個mysql複製?如果你有權訪問配置文件。這更好地解決了所有問題。 – GhostGambler

+0

不幸的是,整個系統包括用戶在實時數據庫上工作,以及管理員在主服務器上工作 - 日常數據將每天與主服務器同步一次,然後在主服務器上輸入更改,然後重新同步其他數據辦法。 – RayZor

+1

你有沒有看過Master-Master-Replications? – GhostGambler

回答

相關問題