以前一直用的是SQL Server資料庫,最近公司有個新項目,要用mysql資料庫,其中有很多跨伺服器訪問的情況.SQL Server使用連結的伺服器實現跨伺服器訪問,而mysql是通過Federated引擎實現的.
要配置Federated引擎,需要mysql5.0以上的版本,具體配置方法如下:
1.查看是否安裝了federated引擎
輸入命令:show engines;
結果如下:
Engine Support Comment Transactions XA Savepoints
MEMORY YES Hash based, stored in memory, useful for temporary tables NO NO NO
FEDERATED NO Federated MySQL storage engine
MyISAM YES Default engine as of MySQL 3.23 with great performance NO NO NO
BLACKHOLE YES /dev/null storage engine (anything you write to it disappears) NO NO NO
MRG_MYISAM YES Collection of identical MyISAM tables NO NO NO
CSV YES CSV storage engine NO NO NO
ARCHIVE YES Archive storage engine NO NO NO
InnoDB DEFAULT Supports transactions, row-level locking, and foreign keys YES YES YES
從中可以看出federated引擎沒有開啟.
2.開啟federated引擎
windows下在my.ini中加入federated,即可開啟;
linux中,需要編譯時間加入選項,再在my.ini中加入federated,方可開啟.
3.建立遠端資料錶鏈接
假如:在ServerA上有一個資料庫dbtestA,在ServerB上有資料庫dbtestB,要在ServerB的資料庫dbtestB上建立 ServerA的資料庫dbtestA上的表tabletestA的資料錶鏈接remote_tabletestA,語句如下:
create table remote_tabletestA ... ... engine=federated connection = 'mysql://root:123123@ServerA:3306/dbtestA/tabletestA';
4.使用遠端資料錶鏈接
如上例,直接在ServerB的資料庫dbtestB上對錶remote_tabletestA進行操作,即是操作ServerA上資料庫dbtestA的表tabletestA.