如何在同一台机器上同步不同MySQL数据库的两个表?(How to synchronize two

2019-08-21 16:01发布

我有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)它应该更新contact_no所述的db2_emp_info (在db_two)。 如果用户更新emp_emaildb1_emp_company (在db_one)应该更新email_adddb2_emp_info (在db_two)。 等等。

可能吗?

Answer 1:

为了这个目的,你可以使用事务。

$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.";
}

如果一个查询失败也不会允许对方运行,将回滚。 这仅仅是示例代码。 您可以使用更新,而不是插入的。



Answer 2:

你可以这样做:

在更新db_one在site1的表:

 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

 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;

如果您发布的代码,用于更新的东西。 这将有助于给出确切的答案。



Answer 3:

您可以使用mysqldiff此问题。 查看此网页: http://www.mysqldiff.org/index.php



文章来源: How to synchronize two tables of different MySQL databases on the same machine?