《Mysql應(yīng)用Mysql 開啟Federated引擎的方法》要點(diǎn):
本文介紹了Mysql應(yīng)用Mysql 開啟Federated引擎的方法,希望對您有用。如果有疑問,可以聯(lián)系我們。
MySQL中針對不同的功能需求提供了不同的存儲引擎.所謂的存儲引擎也就是MySQL下特定接口的具體實(shí)現(xiàn).
FEDERATED是其中一個(gè)專門針對遠(yuǎn)程數(shù)據(jù)庫的實(shí)現(xiàn).一般情況下在本地?cái)?shù)據(jù)庫中建表會(huì)在數(shù)據(jù)庫目錄中生成相應(yīng)的表定義文件,并同時(shí)生成相應(yīng)的數(shù)據(jù)文件.
但通過FEDERATED引擎創(chuàng)建的表只是在本地有表定義文件,數(shù)據(jù)文件則存在于遠(yuǎn)程數(shù)據(jù)庫中(這一點(diǎn)很重要).
通過這個(gè)引擎可以實(shí)現(xiàn)類似Oracle 下DBLINK的遠(yuǎn)程數(shù)據(jù)訪問功能.
使用show engines 命令查看數(shù)據(jù)庫是否已支持FEDERATED引擎:
Support 的值有以下幾個(gè):
YES |
支持并開啟 |
DEFAULT |
支持并開啟, 并且為默認(rèn)引擎 |
NO |
不支持 |
DISABLED |
支持,但未開啟 |
可以看出MyISAM為當(dāng)前默認(rèn)的引擎.
使用FEDERATED建表語句如下:
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ù)庫目前僅限MySQL
3.不支持事務(wù)
4.不支持表結(jié)構(gòu)修改
以下是補(bǔ)充:
MYSQL學(xué)習(xí)參考一下在windows下的解決辦法,在my.cnf中增加一行
代碼如下:
federated
重啟mysql服務(wù)后,
mysql> show engines;

Federated存儲引擎可以使你在本地?cái)?shù)據(jù)庫中訪問遠(yuǎn)程數(shù)據(jù)庫中的數(shù)據(jù),針對federated存儲引擎表的查詢會(huì)被發(fā)送到遠(yuǎn)程數(shù)據(jù)庫的表上執(zhí)行,本地是不存儲任何數(shù)據(jù)的.
簡要介紹后,是不是發(fā)現(xiàn)它和Oracle的database link(數(shù)據(jù)庫鏈接)非常相似,它所實(shí)現(xiàn)的功能和db link類似,要在MySQL下找尋db link替代品的,federated存儲引擎是不二的選擇.
MYSQL學(xué)習(xí)1.?? 查看當(dāng)前支持的存儲引擎
MYSQL學(xué)習(xí)SQL>show engines;
代碼如下:
+------------+---------+------------------------------------------------------------+--------------+------+------------+??
| 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í)沒有編譯進(jìn)來,只能現(xiàn)安裝了.
MYSQL學(xué)習(xí)2.?? 安裝federated存儲引擎
MYSQL學(xué)習(xí)由于編譯時(shí)沒有選擇federated,所以打算通過INSTALL PLUGIN的方式安裝,正常情況下,federated是支持動(dòng)態(tài)安裝的:
?? === Federated Storage Engine ===
? Plugin Name:????? federated
? Description:????? Connects to tables on remote MySQL servers
? Supports build:?? static and dynamic
? Configurations:?? max, max-no-ndb
MYSQL學(xué)習(xí)可是執(zhí)行以下命令時(shí)報(bào)錯(cuò):
MYSQL學(xué)習(xí)SQL>install plugin federated soname 'ha_federated.so';
ERROR 1126 (HY000): Can't open shared library '/usr/local/mysql/lib/mysql/plugin/ha_federated.so' (errno: 2 undefined symbol: dynstr_append_mem)
搜了一下,發(fā)現(xiàn)是個(gè)老問題,竟然到現(xiàn)在都沒解決,可見MySQL團(tuán)隊(duì)的效率和管理的混亂.http://bugs.mysql.com/bug.php?id=40942
沒有辦法了,只有重新編譯MySQL源碼了, 加上--with-plugins=federated.從5.1.26開始,默認(rèn)MySQL不啟用federated存儲引擎,所以需要在my.cnf中加入federated選項(xiàng)或是在命令行用--federated選項(xiàng)啟動(dòng)mysqld.編譯后的結(jié)果如下:
MYSQL學(xué)習(xí)SQL>show engines;
代碼如下:
+------------+---------+----------------------------------------------------------------------------+--------------+------+------------+??
| 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存儲引擎了.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/5485.html