Mysql 開啟Federated引擎的方法
FEDERATED是其中一個專門針對遠程數(shù)據(jù)庫的實現(xiàn)。一般情況下在本地數(shù)據(jù)庫中建表會在數(shù)據(jù)庫目錄中生成相應的表定義文件,并同時生成相應的數(shù)據(jù)文件。
但通過FEDERATED引擎創(chuàng)建的表只是在本地有表定義文件,數(shù)據(jù)文件則存在于遠程數(shù)據(jù)庫中(這一點很重要)。
通過這個引擎可以實現(xiàn)類似Oracle 下DBLINK的遠程數(shù)據(jù)訪問功能。
使用show engines 命令查看數(shù)據(jù)庫是否已支持FEDERATED引擎:
Support 的值有以下幾個:
YES |
支持并開啟 |
DEFAULT |
支持并開啟 , 并且為默認引擎 |
NO |
不支持 |
DISABLED |
支持,但未開啟 |
可以看出MyISAM為當前默認的引擎。
使用FEDERATED建表語句如下:
CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]'
創(chuàng)建成功后就可直接在本地查詢相應的遠程表了。
需要注意的幾點:
1. 本地的表結構必須與遠程的完全一樣。
2.遠程數(shù)據(jù)庫目前僅限MySQL
3.不支持事務
4.不支持表結構修改
以下是補充:
參考一下在windows下的解決辦法,在my.cnf中增加一行
federated
重啟mysql服務后,
mysql> show engines;

Federated存儲引擎可以使你在本地數(shù)據(jù)庫中訪問遠程數(shù)據(jù)庫中的數(shù)據(jù),針對federated存儲引擎表的查詢會被發(fā)送到遠程數(shù)據(jù)庫的表上執(zhí)行,本地是不存儲任何數(shù)據(jù)的。
簡要介紹后,是不是發(fā)現(xiàn)它和Oracle的database link(數(shù)據(jù)庫鏈接)非常相似,它所實現(xiàn)的功能和db link類似,要在MySQL下找尋db link替代品的,federated存儲引擎是不二的選擇。
1. 查看當前支持的存儲引擎
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時沒有編譯進來,只能現(xiàn)安裝了。
2. 安裝federated存儲引擎
由于編譯時沒有選擇federated,所以打算通過INSTALL PLUGIN的方式安裝,正常情況下,federated是支持動態(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
可是執(zhí)行以下命令時報錯:
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)是個老問題,竟然到現(xiàn)在都沒解決,可見MySQL團隊的效率和管理的混亂。http://bugs.mysql.com/bug.php?id=40942
沒有辦法了,只有重新編譯MySQL源碼了, 加上--with-plugins=federated。從5.1.26開始,默認MySQL不啟用federated存儲引擎,所以需要在my.cnf中加入federated選項或是在命令行用--federated選項啟動mysqld。編譯后的結果如下:
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存儲引擎了。
相關文章
MySQL數(shù)據(jù)庫常用操作和技巧(DBA必備知識)
MySQL數(shù)據(jù)庫可以說是DBA們最常見和常用的數(shù)據(jù)庫之一,為了方便大家使用,老MySQL DBA總結了MySQL數(shù)據(jù)庫最常見和最常使用的一些經(jīng)驗和技巧,與分享大家!2011-03-03MySQL count(1)、count(*)、count(字段)的區(qū)別
COUNT在數(shù)據(jù)庫行數(shù)統(tǒng)計中被廣泛使用,那么你知道MySQL count(1)、count(*)、count(字段)的區(qū)別嗎,本文就想的介紹一下,感興趣的可以了解一下2021-12-12詳解mysql 使用left join添加where條件的問題分析
這篇文章主要介紹了詳解mysql 使用left join添加where條件的問題分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02