簡體   English   中英

如何在同一台機器上同步不同MySQL數據庫的兩個表?

[英]How to synchronize two tables of different MySQL databases on the same machine?

我有2個不同的數據庫,比如說db_one和db_two。 每個人都有一張桌子。 分別為db1_emp_companydb2_emp_info

結構如下:

db_one           |    db_two
__________________________________
db1_emp_company  |    db2_emp_info
__________________________________
phone_no         |    contact_no
emp_email        |    email_add
home_address     |    address

這兩個數據庫由同一服務器上的兩個不同的php網站托管。

我想同步這兩個不同數據庫的表。 例如,如果用戶更新phone_nodb1_emp_company (在db_one中),則應更新db2_emp_infocontact_no (在db_two中)。 如果用戶更新了emp_emaildb1_emp_company (在db_one中),它應該更新db2_emp_infoemail_add (在db_two中)。 等等。

可能嗎?

為此,您可以使用交易。

$mysql_host                 = DB_HOST;
$mysql_username             = DB_USER;
$mysql_password             = DB_PASSWORD;
$mysql_database1            = DATABASE1;
$mysql_database2            = DATABASE2;

$mysqli = new mysqli($mysql_host, $mysql_username, $mysql_password) or die( mysql_error());

/*  Begin Transaction   */
$mysqli->autocommit(FALSE); 


/*  Insert data from db1 to db2 */
$query  =  "    INSERT INTO $mysql_database1.table1";

$a  =   $mysqli->query($query); 

$query  =  "    INSERT INTO $mysql_database1.table2
            SELECT 
                *
            FROM $mysql_database2.table2
            WHERE NOT EXISTS(SELECT * from $mysql_database1.table2)     
";
$d  =   $mysqli->query($query); 


if ($a and $b) 
{
    $mysqli->commit();      
    echo "Data synched successfully.";
} else {        

    $mysqli->rollback();        
    echo "Data failed to synch.";
}

如果一個查詢失敗,它將不允許另一個查詢運行並將回滾。 這只是示例代碼。 您可以使用update而不是insert。

你可以這樣做:

在更新site1中的db_one表時:

 update `db_one`.`db1_emp_company` set phone_no = '1234567890' where conditions_here;
 update `db_two`.`db2_emp_info` set contact_no = '1234567890' where conditions_here;

db_two相同db_two

 update `db_two`.`db2_emp_info` set contact_no = '1234567890' where conditions_here; #Its a same thing as above
 update `db_one`.`db1_emp_company` set phone_no = '1234567890' where conditions_here;

如果您發布用於更新內容的代碼。 給出確切的答案會很有幫助。

你可以使用mysqldiff來解決這個問題。 查看此頁面: http//www.mysqldiff.org/index.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM