Linux mysql federated_MySQL的FEDERATED引擎实现类Oracle的DBlink
隨著業(yè)務(wù)的復(fù)雜度不斷的增加、數(shù)據(jù)庫(kù)不斷的切分,在分布式系統(tǒng)中往往一臺(tái)或幾臺(tái)數(shù)據(jù)庫(kù)并不能滿(mǎn)足我們的需求,所以常常需要多臺(tái)同時(shí)時(shí)用,而在平時(shí)需要通過(guò)其它服務(wù)器的數(shù)據(jù)庫(kù)獲取信息最為方便的就是數(shù)據(jù)鏈接,而比較常見(jiàn)的如Oracle中的DBlink一般,使用過(guò)Oracle的DBlink—數(shù)據(jù)庫(kù)的鏈接的人都知道可以跨服務(wù)器數(shù)據(jù)庫(kù)的來(lái)進(jìn)行數(shù)據(jù)查詢(xún)。而在MySQL5.0以后中通過(guò)使用FEDERATED引擎也可以實(shí)現(xiàn)類(lèi)似于Oracle中DBlink,在MySQL5.5開(kāi)始默認(rèn)安裝只是沒(méi)有啟用,同Oracle的DBlink一樣MySQL使用FEDERATED引擎實(shí)現(xiàn)外鏈接建議是在同一個(gè)局域網(wǎng)內(nèi),這樣可以減小彼此間的延遲,但兩者之間還是有很大區(qū)別的,在MySQL下使用FEDERATED引擎實(shí)現(xiàn)的外鏈接需要在本地?cái)?shù)據(jù)庫(kù)中建虛擬表用以連接遠(yuǎn)程數(shù)據(jù)庫(kù),在這里就就簡(jiǎn)單的說(shuō)明一下MySQL的FEDERATED引擎實(shí)現(xiàn)的數(shù)據(jù)庫(kù)外鏈接。
首先,需要注意的有幾點(diǎn):
1、建立外鏈接于局域網(wǎng)內(nèi)的環(huán)境實(shí)現(xiàn)最優(yōu);
2、使用FEDERATED引擎的外鏈接表,在本地是虛擬表,所以建表的示后不需要主鍵、索引、自增字段這些。同理,對(duì)本地虛擬表的結(jié)構(gòu)修改,并不會(huì)修改遠(yuǎn)程表的結(jié)構(gòu);
3、TRUNCATE(截?cái)啾?會(huì)清除遠(yuǎn)程表數(shù)據(jù),DROP只會(huì)刪除本地虛擬表;
4、在虛擬表上不支持ALTER
在數(shù)據(jù)庫(kù)中是否有FEDERATED引擎可以通過(guò)如下來(lái)查看:
一般這種情況就是有FEDERATED引擎但是沒(méi)有啟用,啟用很簡(jiǎn)單,在my.cnf或my.ini中的[mysqld]段中修改添加,如下:
[mysqld]
……
federated
……
重啟MySQL,此時(shí)再看就啟用了FEDERATED引擎
此時(shí)再本地?cái)?shù)據(jù)庫(kù)建虛擬表用來(lái)鏈接遠(yuǎn)程數(shù)據(jù)庫(kù),其表結(jié)構(gòu)可以通過(guò)在遠(yuǎn)程數(shù)據(jù)庫(kù)中通過(guò)SHOW CREATE TABLE來(lái)查看DDL,但是要注意去掉主鍵、索引、自增字段,但是本地的虛擬表的表名可以不同,如遠(yuǎn)程數(shù)據(jù)庫(kù):192.168.2.25下的my_test庫(kù)下有一張book_price表,遠(yuǎn)程數(shù)據(jù)庫(kù)上的DDL:
在本地?cái)?shù)據(jù)庫(kù)中的DDL如下:
這里需要注意的是CONNECTION后則是遠(yuǎn)程數(shù)據(jù)庫(kù)的連接信息,這里要注意的是避免使用帶‘@’的密碼以免混淆,效果如下:
總結(jié)
以上是生活随笔為你收集整理的Linux mysql federated_MySQL的FEDERATED引擎实现类Oracle的DBlink的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 分布式mysql一致性问题_分布式缓存数
- 下一篇: mysql的单页应用框架搭建_采用vue