Как синхронизировать две таблицы различных баз данных MySQL на одном компьютере?

У меня есть две разные базы данных, скажем, db_one и db_two. У каждого есть таблица. db1_emp_company и db2_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_no из db1_emp_company (в db_one), он должен обновить contact_no db2_emp_info (в db_two). И если пользователь обновляет emp_email из db1_emp_company (в db_one), он должен обновить email_add из db2_emp_info (в 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."; } 

Если один запрос завершается с ошибкой, он не позволит другому запустить и откат. Это всего лишь пример кода. Вы можете использовать обновление вместо вставки.

Вы можете сделать так:

При обновлении таблицы 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; 

Если вы разместите свой код, который используется для обновления. Будет полезно дать точный ответ.

Вы можете использовать mysqldiff для этой проблемы. Проверьте эту страницу: http://www.mysqldiff.org/index.php