MySQL是一個非常流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),被廣泛用于各種類型的應(yīng)用程序。在有些情況下,我們需要兩個MySQL數(shù)據(jù)庫之間進行數(shù)據(jù)交流和互動。這篇文章將分享兩個MySQL數(shù)據(jù)庫互動的不同方法。
第一種方法是使用MySQL的復(fù)制功能。MySQL復(fù)制是一個可靠的方法,可以將一個MySQL數(shù)據(jù)庫的所有更改或更新同步到另一個MySQL數(shù)據(jù)庫中。這種方法也可以簡化備份和數(shù)據(jù)恢復(fù)。
# 配置MySQL主從復(fù)制 #在主服務(wù)器(192.0.2.1)的MySQL配置文件中添加以下配置: server-id = 1 log_bin = /var/lib/mysql/mysql-bin.log #在從服務(wù)器(192.0.2.2)的MySQL配置文件中添加以下配置: server-id = 2 relay-log = /var/lib/mysql/mysql-relay-bin.log # 在主服務(wù)器上創(chuàng)建一個專用的復(fù)制用戶,并將其授權(quán)給主服務(wù)器上的所有數(shù)據(jù)庫: mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.0.2.2' IDENTIFIED BY 'password'; # 在從服務(wù)器上指定主服務(wù)器的ip地址和復(fù)制用戶的用戶名和密碼: mysql>CHANGE MASTER TO MASTER_HOST='192.0.2.1', MASTER_USER='repl_user', MASTER_PASSWORD='password'; # 啟動主服務(wù)器上的二進制日志寫入(mysql)進程 mysql>FLUSH TABLES WITH READ LOCK; mysql>SHOW MASTER STATUS \G; # 在從服務(wù)器上啟動I/O線程,以便開始復(fù)制數(shù)據(jù) mysql>START SLAVE;
第二種方法是使用MySQL的Federated表。Federated表允許您在一臺MySQL服務(wù)器上創(chuàng)建一個簡單的表,該表實際上是指向另一臺MySQL服務(wù)器上的實際表。這可以使您更方便地共享數(shù)據(jù),而無需進一步的配置。
# 創(chuàng)建一個Federated表 # 假設(shè)您在服務(wù)器A上有一個名為“db1”的數(shù)據(jù)庫,其中有一個“table1”的表 # 在服務(wù)器B上添加以下內(nèi)容到“db2”數(shù)據(jù)庫: CREATE TABLE `federated_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=FEDERATED DEFAULT CHARSET=utf8mb4 CONNECTION='mysql://user:password@serverA/db1/table1'; # 在服務(wù)器B上查詢federated_table表: SELECT * FROM federated_table;
這兩種方法都是可行的,它們都允許不同的MySQL數(shù)據(jù)庫之間實現(xiàn)相互的互動和數(shù)據(jù)共享。復(fù)制功能提供了更精確和更可靠的同步,而Federated表則允許更快速和簡單的共享。