2012-04-24 88 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

相關問題