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