2014-02-28 82 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

回答

相关问题