1. 程式人生 > 資料庫 >mysql基於federated儲存引擎訪問遠端資料庫表

mysql基於federated儲存引擎訪問遠端資料庫表

還是老問題

最近在開發一個專案,需要訪問另一個專案的資料,由於兩個資料庫是部署在同一個伺服器上,且本專案只是對另一資料讀取,因此決定在專案中使用雙資料來源配置進行訪問。

如果是想在程式碼中做雙資料來源配置,可以檢視我的另一篇文章:SpringMVC雙資料來源配置

 

今天我這邊要講的是另一種方式,mysql基於federated儲存引擎訪問遠端資料庫表

基於這種方式,從程式角度來看,只需要訪問一個數據庫即可。

但是這個是有一個前置條件:兩個資料庫都必須是mysql資料庫,且被訪問的表必須是可以通過網路訪問到的(同一臺機器也好,同一個區域網也好,走外網對映也好,總之要能被訪問就是了)

好了,話不多說,馬上開始。

假設有A和B兩個資料庫。

B庫想訪問A庫的表a

1、先開啟B庫的federated儲存引擎    

檢視資料庫的federated儲存引擎是否開啟;

方法一、開啟mysql的命令列客戶端,輸入show engines;

方法二、開啟navicate,在information_schema中找到ENGINES表

查看錶的記錄

顯示NO就表示沒開啟,需要開啟;

開啟MYSQL的my.ini檔案,進行編輯,在[mysqld]標籤下新增federated,具體如下

設定完後重啟mysql服務,即可。

 

2、在B庫中新增資料表

CREATE TABLE `a` (

  `id` varchar(64) NOT NULL,

  `no` varchar(32) DEFAULT NULL,

  `name` varchar(64) DEFAULT NULL,

  `start_time` varchar(128) DEFAULT NULL,

  `end_time` varchar(128) DEFAULT NULL 

) ENGINE=FEDERATED

 CONNECTION='mysql://root:123456@localhost:3306/A/a'

 DEFAULT CHARSET=utf8 ; 

注意:

       ENGINE=FEDERATED指定引擎型別

       CONNECTION='mysql://root:123456@localhost:3306/A/a'指定連線的資料庫和表資訊

                 root:資料庫使用者名稱

                 123456:資料庫密碼

                 localhost:A庫的訪問地址

                 3306:A庫的埠

                  A:資料庫名稱

                  a:表名

 建立完後就看到B庫有a表,可以進行查詢和修改,具體的訪問許可權是根據CONNECTION裡面的資料庫使用者許可權來決定的。

 

到此,程式就可以直接通過B庫訪問和修改A庫中的a表。

比起SpringMVC雙資料來源配置,這種方式相對是比較簡單的,而且這個是可以關聯多個數據庫的。