Mysql 開啟Federated引擎的方法

來源:互聯網
上載者:User

MySQL中針對不同的功能需求提供了不同的儲存引擎。所謂的儲存引擎也就是MySQL下特定介面的具體實現。

FEDERATED是其中一個專門針對遠端資料庫的實現。一般情況下在本機資料庫中建表會在資料庫目錄中產生相應的表定義檔案,並同時產生相應的資料檔案。
但通過FEDERATED引擎建立的表只是在本地有表定義檔案,資料檔案則存在於遠端資料庫中(這一點很重要)。

通過這個引擎可以實作類別似Oracle 下DBLINK的遠端資料存取功能。

使用show engines 命令查看資料庫是否已支援FEDERATED引擎:

Support 的值有以下幾個:

YES 支援並開啟
DEFAULT 支援並開啟, 並且為預設引擎
NO 不支援
DISABLED 支援,但未開啟

可以看出MyISAM為當前預設的引擎。
使用FEDERATED建表語句如下:
CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]'
建立成功後就可直接在本地查詢相應的遠端資料表了。

需要注意的幾點:

1. 本地的表結構必須與遠端完全一樣。
2.遠端資料庫目前僅限MySQL
3.不支援事務
4.不支援表結構修改

以下是補充:

參考一下在windows下的解決辦法,在my.cnf中增加一行

複製代碼 代碼如下:federated

重啟mysql服務後,

mysql> show engines;

Federated儲存引擎可以使你在本機資料庫中訪問遠端資料庫中的資料,針對federated儲存引擎表的查詢會被發送到遠端資料庫的表上執行,本地是不儲存任何資料的。
簡要介紹後,是不是發現它和Oracle的database link(資料庫連結)非常相似,它所實現的功能和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)

發現安裝MySQL時沒有編譯進來,只能現安裝了。

2. 安裝federated儲存引擎

由於編譯時間沒有選擇federated,所以打算通過INSTALL PLUGIN的方式安裝,正常情況下,federated是支援動態安裝的:
=== Federated Storage Engine ===
Plugin Name: federated
Description: Connects to tables on remote MySQL servers
Supports build: static and dynamic
Configurations: max, max-no-ndb

可是執行以下命令時報錯:

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)
搜了一下,發現是個老問題,竟然到現在都沒解決,可見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)

至此,我們已經可以使用federated儲存引擎了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.