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賬戶記錄?我更喜歡這種更新產品的方法,但不能在實況網站上使用喪偶產品。
爲什麼不建立一個mysql複製?如果你有權訪問配置文件。這更好地解決了所有問題。 – GhostGambler
不幸的是,整個系統包括用戶在實時數據庫上工作,以及管理員在主服務器上工作 - 日常數據將每天與主服務器同步一次,然後在主服務器上輸入更改,然後重新同步其他數據辦法。 – RayZor
你有沒有看過Master-Master-Replications? – GhostGambler