FEDERATED是其中一個(gè)專門(mén)針對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)的實(shí)現(xiàn)。一般情況下在本地?cái)?shù)據(jù)庫(kù)中建表會(huì)在數(shù)據(jù)庫(kù)目錄中生成相應(yīng)的表定義文件,并同時(shí)生成相應(yīng)的數(shù)據(jù)文件 MySQL中針對(duì)不同的功能需求提供了不同的存儲(chǔ)引擎。所謂的存儲(chǔ)引擎也就是MySQL下特定接口的具體實(shí)現(xiàn)。
FEDERATED是其中一個(gè)專門(mén)針對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)的實(shí)現(xiàn)。一般情況下在本地?cái)?shù)據(jù)庫(kù)中建表會(huì)在數(shù)據(jù)庫(kù)目錄中生成相應(yīng)的表定義文件,并同時(shí)生成相應(yīng)的數(shù)據(jù)文件。 但通過(guò)FEDERATED引擎創(chuàng)建的表只是在本地有表定義文件,數(shù)據(jù)文件則存在于遠(yuǎn)程數(shù)據(jù)庫(kù)中(這一點(diǎn)很重要)。 通過(guò)這個(gè)引擎可以實(shí)現(xiàn)類似Oracle 下DBLINK的遠(yuǎn)程數(shù)據(jù)訪問(wèn)功能。 使用show engines 命令查看數(shù)據(jù)庫(kù)是否已支持FEDERATED引擎: Support 的值有以下幾個(gè):
可以看出MyISAM為當(dāng)前默認(rèn)的引擎。 使用FEDERATED建表語(yǔ)句如下: CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]' 創(chuàng)建成功后就可直接在本地查詢相應(yīng)的遠(yuǎn)程表了。 需要注意的幾點(diǎn): 1. 本地的表結(jié)構(gòu)必須與遠(yuǎn)程的完全一樣。 2.遠(yuǎn)程數(shù)據(jù)庫(kù)目前僅限MySQL 3.不支持事務(wù) 4.不支持表結(jié)構(gòu)修改 以下是補(bǔ)充: 參考一下在windows下的解決辦法,在my.cnf中增加一行 復(fù)制代碼
代碼如下:
federated 重啟mysql服務(wù)后, mysql> show engines; ![]() Federated存儲(chǔ)引擎可以使你在本地?cái)?shù)據(jù)庫(kù)中訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)中的數(shù)據(jù),針對(duì)federated存儲(chǔ)引擎表的查詢會(huì)被發(fā)送到遠(yuǎn)程數(shù)據(jù)庫(kù)的表上執(zhí)行,本地是不存儲(chǔ)任何數(shù)據(jù)的。 簡(jiǎn)要介紹后,是不是發(fā)現(xiàn)它和Oracle的database link(數(shù)據(jù)庫(kù)鏈接)非常相似,它所實(shí)現(xiàn)的功能和db link類似,要在MySQL下找尋db link替代品的,federated存儲(chǔ)引擎是不二的選擇。
1. 查看當(dāng)前支持的存儲(chǔ)引擎 SQL>show engines; 復(fù)制代碼
代碼如下:
+------------+---------+------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +------------+---------+------------------------------------------------------------+--------------+------+------------+ | CSV | YES | CSV storage engine | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MyISAM | YES | Default engine as of MySQL 3.23 with great performance | NO | NO | NO | +------------+---------+------------------------------------------------------------+--------------+------+------------+ 5 rows in set (0.00 sec) 發(fā)現(xiàn)安裝MySQL時(shí)沒(méi)有編譯進(jìn)來(lái),只能現(xiàn)安裝了。
2. 安裝federated存儲(chǔ)引擎 由于編譯時(shí)沒(méi)有選擇federated,所以打算通過(guò)INSTALL PLUGIN的方式安裝,正常情況下,federated是支持動(dòng)態(tài)安裝的: 可是執(zhí)行以下命令時(shí)報(bào)錯(cuò): SQL>install plugin federated soname 'ha_federated.so'; SQL>show engines; 復(fù)制代碼
代碼如下:
+------------+---------+----------------------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +------------+---------+----------------------------------------------------------------------------+--------------+------+------------+ | CSV | YES | CSV storage engine | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | FEDERATED | YES | Federated MySQL storage engine | NO | NO | NO | | MyISAM | YES | Default engine as of MySQL 3.23 with great performance | NO | NO | NO | | InnoDB | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | +------------+---------+----------------------------------------------------------------------------+--------------+------+------------+ 6 rows in set (0.00 sec) 至此,我們已經(jīng)可以使用federated存儲(chǔ)引擎了。 |
|