Mysql不同服務(wù)器跨庫查詢解決方案
項目場景:
Mysql在不同服務(wù)器實現(xiàn)跨庫查詢,類似dblink。
解決方案:
在兩臺不同服務(wù)器,實現(xiàn)跨庫查詢,其實現(xiàn)原理類似一個虛擬映射,需要用到mysql的另一個存儲引擎Federated,F(xiàn)EDERATED存儲引擎訪問在遠(yuǎn)程數(shù)據(jù)庫的表中的數(shù)據(jù),而不是本地的表。
這個特性給某些開發(fā)應(yīng)用帶來了便利,你可以直接在本地構(gòu)建一個federated表來連接遠(yuǎn)程數(shù)據(jù)表,配置好了之后本地表的數(shù)據(jù)可以直接跟遠(yuǎn)程數(shù)據(jù)表同步。實際上這個引擎里面是不真實存放數(shù)據(jù)的,所需要的數(shù)據(jù)都是連接到其他MySQL服務(wù)器上獲取。
1、開啟FEDERATED引擎
show engines;

如果這里是NO,需要在配置文件[mysqld]中加入一行:federated

改完重啟服務(wù),就變成yes了。
2、創(chuàng)建虛擬表
場景A庫,想訪問遠(yuǎn)程B庫的test表
在A數(shù)據(jù)庫上創(chuàng)建虛擬表test_copy,將B庫上test表映射到A庫上面
CREATE TABLE `test_copy` ( `id` int NOT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=FEDERATED DEFAULT CHARSET=utf8mb3 COMMENT='遠(yuǎn)程測試表test' CONNECTION='mysql://root:123456@127.0.0.1:3306/B/test'; /** CONNECTION='mysql://root:123456$@127.0.0.1:3306/B/test' root:代表遠(yuǎn)程數(shù)據(jù)庫的用戶 123456:代表遠(yuǎn)程數(shù)據(jù)的密碼 127.0.0.1:代表遠(yuǎn)程數(shù)據(jù)庫的ip地址,域名也可以 B:代表遠(yuǎn)程數(shù)據(jù)庫的數(shù)據(jù)庫名稱 test:代表遠(yuǎn)程數(shù)據(jù)庫中的哪一張表 **/
與普通建表語句不同的地方:
ENGINE=FEDERATED CONNECTION='mysql://root:123456@127.0.0.1:3306/B/test'
這樣就可以直接查詢test_copy表了
注意事項:
1.本地創(chuàng)建的表名必須在遠(yuǎn)程服務(wù)器存在,創(chuàng)建的字段也必須是遠(yuǎn)程表中的字段,可以比遠(yuǎn)程表的字段少,但是不能多,本地存儲引擎選擇
2.對本地虛擬表的結(jié)構(gòu)修改,并不會修改遠(yuǎn)程表的結(jié)構(gòu)
3.truncate 命令,會清除遠(yuǎn)程表數(shù)據(jù)
4.drop命令只會刪除虛擬表,并不會刪除遠(yuǎn)程表
5.select count(*), select * from limit M, N 等語句執(zhí)行效率非常低,數(shù)據(jù)量較大時存在很嚴(yán)重的問題,但是按主鍵或索引列查詢,則很快,如以下查詢就非常慢(假設(shè) id 為主索引)
select id from db.tablea where id >100 limit 10 ;
到此這篇關(guān)于Mysql不同服務(wù)器跨庫查詢解決方案的文章就介紹到這了,更多相關(guān)Mysql 跨庫查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
單個select語句實現(xiàn)MySQL查詢統(tǒng)計次數(shù)
MySQL中查詢統(tǒng)計次數(shù)往往語句寫法很復(fù)雜,下文就教您一個只用單個select語句就實現(xiàn)的方法,希望對您能夠有所幫助2014-05-05
Mysql 遠(yuǎn)程連接配置實現(xiàn)的兩種方法
這篇文章主要介紹了Mysql 遠(yuǎn)程連接配置實現(xiàn)的兩種方法的相關(guān)資料,需要的朋友可以參考下2017-07-07
MySQL數(shù)據(jù)庫中case表達(dá)式的用法示例
這篇文章主要介紹了MySQL數(shù)據(jù)庫中case表達(dá)式用法的相關(guān)資料,MySQL的CASE表達(dá)式用于條件判斷,返回不同結(jié)果,適用于SELECT、UPDATE和ORDERBY,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-02-02
Ubuntu 18.04下mysql 8.0 安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了Ubuntu 18.04下mysql 8.0 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
關(guān)于Mysql中ON與Where區(qū)別問題詳解
在編寫SQL腳本中,多表連接查詢操作需要使用到on和where條件,但是經(jīng)常會混淆兩者的用法,從而造成取數(shù)錯誤,下面這篇文章主要給大家介紹了關(guān)于Mysql中ON與Where區(qū)別問題的相關(guān)資料,需要的朋友可以參考下2022-02-02

