mysql跨服務(wù)查詢之FEDERATED存儲引擎的實現(xiàn)
一、FEDERATED存儲引擎
01、從5.1.26開始,默認(rèn)MySQL不啟用federated存儲引擎,所以需要在my.cnf中加入federated選項
02、或是在命令行用–federated選項啟動mysqld。
1.1、說明:
mysql 提供了一個類似Oracle中的數(shù)據(jù)庫鏈接(DBLINK)功能的存儲引擎–FEDERATED
當(dāng)我們創(chuàng)建一個以FEDERATED為存儲引擎的表時,服務(wù)器在數(shù)據(jù)庫目錄只創(chuàng)建一個表定義文件。文件由表的名字開始,并有一個frm擴展名。無其它文件被創(chuàng)建,因為實際的數(shù)據(jù)在一個遠(yuǎn)程數(shù)據(jù)庫上。這不同于為本地表工作的存儲引擎的方式。
1.2、局限性
遠(yuǎn)程服務(wù)器必須是一個MySQL服務(wù)器。
遠(yuǎn)程服務(wù)器必須是一個MySQL服務(wù)器。
FEDERATED對其它數(shù)據(jù)庫引擎的支持可能會在將來被添加,目前不支持其他數(shù)據(jù)庫,跨服務(wù)器遠(yuǎn)程其他類型數(shù)據(jù)庫可以采用創(chuàng)建遠(yuǎn)程連接服務(wù)器的方式
FEDERATED表指向的遠(yuǎn)程表在你通過FEDERATED表訪問它之前必須存在。
一個FEDERATED表指向另一個FEDERATED表是可能的,但是你必須小心不要創(chuàng)建一個循環(huán)。
沒有對事務(wù)的支持。
如果遠(yuǎn)程表已經(jīng)改變,對FEDERATED引擎而言是沒有辦法知道的。
a、這個的原因是因為這個表必須象數(shù)據(jù)文件一樣工作,除了數(shù)據(jù)庫其它任何都不會被寫入。
b、如果有任何對遠(yuǎn)程數(shù)據(jù)庫的改變,本地表中數(shù)據(jù)的完整性可能會被破壞。
FEDERATED存儲引擎支持SELECT, INSERT, UPDATE, DELETE和索引。
它不支持ALTER TABLE, DROP TABLE或任何其它的數(shù)據(jù)定義語言語句。當(dāng)前的實現(xiàn)不使用預(yù)先準(zhǔn)備好的語句。
執(zhí)行使用SELECT, INSERT, UPDATE和DELETE,但不用HANDLER。
FEDERATED表不能對查詢緩存不起作用。
目前的局限性是這些。
這些限制中的一些在FEDERATED處理機的將來版本可能被消除。
1.3、跨服務(wù)的方式
- mysql的FEDERATED存儲引擎
- oracle的dblink
- 創(chuàng)建遠(yuǎn)程連接服務(wù)器
- 大數(shù)據(jù)的presto,接管數(shù)據(jù)源,然后聚合分析
- fink cdc也是一種方案
二、開啟FEDERATED存儲引擎
1.1、查看存儲引擎
- 存在的FEDERATED存儲引擎就配置文件開啟
- 不存在就安裝
查看
show engines;
Support 的值有以下幾個:
- YES 支持并開啟
- DEFAULT 支持并開啟, 并且為默認(rèn)引擎
- NO 不支持
- DISABLED 支持,但未開啟
如圖:

1.1.1、不存在存儲引擎-安裝
federated是支持動態(tài)安裝的
install plugin federated soname 'ha_federated.so';
注明:如果不行話,就重新編碼安裝mysql吧
1.2、開啟存儲引擎
在mysql的配置文件中加入federated,然后重啟mysql
注意:要放在mysqld的模塊下,放在其他模塊下無法識別變量
如圖:

可以登入,表示變量識別成功

查看存儲引擎
yes表示開啟成功

1.3、拓展mysql存儲引擎對比

三、跨服務(wù)連接示例
FEDERATED存儲引擎開啟成功了
1.1、 目標(biāo):
本地mysql去鏈接云服務(wù)器的mysql

1.2、創(chuàng)建關(guān)系
注意:如果遠(yuǎn)程表已經(jīng)改變,對FEDERATED引擎而言是沒有辦法知道的
要了解FEDERATED存儲引擎的局限性,看本文1.2的說明
如果有任何對遠(yuǎn)程數(shù)據(jù)庫的改變,本地表中數(shù)據(jù)的完整性可能會被破壞
建議:表名要見名知意,知道他是遠(yuǎn)程連接的表,就像下面的示例:link_xx_xx表
創(chuàng)建
-- 創(chuàng)建出結(jié)構(gòu)一樣的表,表名可以不一樣 CREATE TABLE `link_yun_sys_user` ( `id` int(50) NOT NULL, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE = FEDERATED CONNECTION='mysql://root:root@81.1x.2xx.10:3306/testLink/sys_user' -- 指定引擎為 FEDERATED -- 指定用戶名、密碼、ip、端口、數(shù)據(jù)庫、表
如圖:

1.2.1、權(quán)限說明
如果數(shù)據(jù)庫有做權(quán)限限制,比如用戶權(quán)限,增刪改查權(quán)限,要進行授權(quán),才能進行操作
1.3、成功效果

1.4、增刪改查
本地新增1條數(shù)據(jù)
INSERT INTO link_yun_sys_user(id,username,`password`,update_time) VALUES('2','lisi','8888',NOW());

云服務(wù)器查看
SELECT * FROM sys_user

到此這篇關(guān)于mysql跨服務(wù)查詢之FEDERATED存儲引擎的實現(xiàn)的文章就介紹到這了,更多相關(guān)mysql FEDERATED存儲引擎內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)庫InnoDB引擎下服務(wù)器斷電數(shù)據(jù)恢復(fù)方法
這篇文章主要介紹了MySQL數(shù)據(jù)庫InnoDB引擎下服務(wù)器斷電數(shù)據(jù)恢復(fù)方法,需要的朋友可以參考下2016-04-04
MySQL與PHP的基礎(chǔ)與應(yīng)用專題之?dāng)?shù)據(jù)查詢
MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL?AB?公司開發(fā),屬于?Oracle?旗下產(chǎn)品。MySQL?是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,本系列將帶你掌握php與mysql的基礎(chǔ)應(yīng)用,本篇從數(shù)據(jù)的查詢開始2022-02-02
關(guān)于Mysql-connector-java驅(qū)動版本問題總結(jié)
這篇文章主要介紹了Mysql-connector-java驅(qū)動版本問題,本文給大家介紹的很詳細(xì),通過原因說明問題小結(jié)個人建議給大家展示的很好,需要的朋友可以參考下2021-06-06
MySQL將版本由5.7.37更新到5.7.39的實現(xiàn)方式
這篇文章主要介紹了MySQL將版本由5.7.37更新到5.7.39的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
MYSQL如何自動為查詢數(shù)據(jù)的結(jié)果編上序號詳解
這篇文章主要給大家介紹了關(guān)于MYSQL如何自動為查詢數(shù)據(jù)的結(jié)果編上序號的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧。2017-11-11
SELECT… FOR UPDATE 排他鎖的實現(xiàn)
本文主要介紹了SELECT… FOR UPDATE 排他鎖的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01

