2012-04-24 89 views
1

我有一个分贝(姑且称之为A是否有可能使数据库像克隆一样行事?

我需要的信息要在多个数据库的(B,C,d需要完全一样的信息)

我可以做的东西,将自动更新他们全部每(X)小时?

我需要这个为了同步使用IIS 7/php的2个joomla组件。

Tryed(工作良好的第一次,但随后如果改变它去fked,因为没有原发于这个组件):

让我的数据

$mysqli = @new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_WORLD); 

/* Vérification de la connexion */ 
if (mysqli_connect_errno()) { 
    die("&error=".mysqli_connect_error()."&"); 
    exit(); 
} 


$query = " SELECT table_name 
      FROM information_schema.tables 
      WHERE table_name LIKE '%XXXXXXX%'"; 

$arrTableList = array(); 
$allInArray  = array(); 
if ($result = $mysqli->query($query)) { 

    /* Récupère un tableau d'objets */ 
    while ($obj = $result->fetch_object()) { 
     $arrTableList[] = $obj->table_name; 
    } 

    /* free result set */ 
    $result->close(); 
} 

foreach($arrTableList as $key => $value){ 

    $query = " SELECT * 
       FROM $value"; 

    if ($result = $mysqli->query($query)) { 

     /* Récupère un tableau d'objets */ 
     while ($row = $result->fetch_array(MYSQLI_ASSOC)) { 
      $allInArray[$value][] = $row; 
     } 

     /* free result set */ 
     $result->close(); 
    } 

} 

插入功能

function toSwich($newDb, $tmpTag){ 
    global $mysqli; 
    global $allInArray; 
    global $tag1; 

    $mysqli->select_db($newDb); 

    foreach($allInArray as $table => $tableArrayData){ 

     $table = str_replace ($tag1, $tmpTag, $table); 
     foreach($tableArrayData as $uselessKey => $valueArray){ 
      $keyList = ""; 
      $valueList = ""; 
      $query = "SELECT COUNT(*) FROM $table WHERE "; 
      foreach($valueArray as $key => $value){ 
       $key  = $mysqli->real_escape_string($key); 
       $value  = $mysqli->real_escape_string($value); 

       $keyList .= $key . ","; 
       $valueList .= "'" . $value . "',"; 

       $query  .= " $key = '$value' AND"; 
      } 

      $query  = substr($query,0,-3); 
      $valueList = substr($valueList,0,-1); 
      $keyList = substr($keyList,0,-1); 

      if(!$result = $mysqli->query($query)){ 
       print_r($mysqli->error); 
       echo "<br />"; 
       print_r($query); 
       echo "<br />"; 
       exit(); 

      } 
      $row = $result->fetch_row(); 
      if((int)$row[0] == 0){ 
       if(!$mysqli->real_query("INSERT INTO $table ($keyList) VALUES ($valueList)")){ 
        print_r($mysqli->error); 
        exit(); 
       } 
      } 
     } 
    } 

} 
+3

http://dev.mysql.com/doc/refman/5.6/en/replication.html – eggyal 2012-04-24 18:09:48

+0

这是一个快速的答案,我要去看一看。谢谢。 – 2012-04-24 18:11:42

+0

http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html @eggyal你打我:P但我的链接有点不同所以我会发布它 – lynks 2012-04-24 18:12:17

回答

1

配置主从复制架构,我会保持数据库不断同步

这里的一个例子,如何配置复制:3 Jump Steps to Configure Master Slave Replication in Mysql

+0

有没有办法“只有名称中包含XXXXX的表格?” – 2012-04-25 15:33:18

+0

您可以使用replicate-ignore-table = database.table来指定要忽略的某些表 – Nico 2012-04-26 19:31:32

相关问题