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

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

改完重啟服務(wù),就變成yes了。
2、創(chuàng)建虛擬表
場(chǎng)景A庫(kù),想訪問(wèn)遠(yuǎn)程B庫(kù)的test表
在A數(shù)據(jù)庫(kù)上創(chuàng)建虛擬表test_copy,將B庫(kù)上test表映射到A庫(kù)上面
CREATE TABLE `test_copy` ( `id` int NOT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=FEDERATED DEFAULT CHARSET=utf8mb3 COMMENT='遠(yuǎn)程測(cè)試表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ù)庫(kù)的用戶 123456:代表遠(yuǎn)程數(shù)據(jù)的密碼 127.0.0.1:代表遠(yuǎn)程數(shù)據(jù)庫(kù)的ip地址,域名也可以 B:代表遠(yuǎn)程數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)名稱 test:代表遠(yuǎn)程數(shù)據(jù)庫(kù)中的哪一張表 **/
與普通建表語(yǔ)句不同的地方:
ENGINE=FEDERATED CONNECTION='mysql://root:123456@127.0.0.1:3306/B/test'
這樣就可以直接查詢test_copy表了
注意事項(xiàng):
1.本地創(chuàng)建的表名必須在遠(yuǎn)程服務(wù)器存在,創(chuàng)建的字段也必須是遠(yuǎn)程表中的字段,可以比遠(yuǎn)程表的字段少,但是不能多,本地存儲(chǔ)引擎選擇
2.對(duì)本地虛擬表的結(jié)構(gòu)修改,并不會(huì)修改遠(yuǎn)程表的結(jié)構(gòu)
3.truncate 命令,會(huì)清除遠(yuǎn)程表數(shù)據(jù)
4.drop命令只會(huì)刪除虛擬表,并不會(huì)刪除遠(yuǎn)程表
5.select count(*), select * from limit M, N 等語(yǔ)句執(zhí)行效率非常低,數(shù)據(jù)量較大時(shí)存在很嚴(yán)重的問(wèn)題,但是按主鍵或索引列查詢,則很快,如以下查詢就非常慢(假設(shè) id 為主索引)
select id from db.tablea where id >100 limit 10 ;
到此這篇關(guān)于Mysql不同服務(wù)器跨庫(kù)查詢解決方案的文章就介紹到這了,更多相關(guān)Mysql 跨庫(kù)查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于MySQL查詢語(yǔ)句的優(yōu)化詳解
這篇文章主要介紹了MySQL查詢語(yǔ)句的優(yōu)化方法,分別介紹了子查詢優(yōu)化,分頁(yè)查詢優(yōu)化以及排序查詢優(yōu)化,對(duì)學(xué)習(xí)有一定的幫助,需要的小伙伴可以參考一下2023-04-04
mysql如何根據(jù).frm和.ibd文件恢復(fù)數(shù)據(jù)表
這篇文章主要介紹了mysql根據(jù).frm和.ibd文件恢復(fù)數(shù)據(jù)表的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
Explain命令在優(yōu)化查詢中的實(shí)際應(yīng)用
在MySQL中,EXPLAIN命令是一種非常重要的查詢優(yōu)化工具,它可以幫助我們分析SQL查詢語(yǔ)句的執(zhí)行計(jì)劃,以及如何優(yōu)化它們。本文介紹了Explain命令在優(yōu)化查詢中的實(shí)際應(yīng)用,感興趣的小伙伴可以參考閱讀2023-04-04
CentOS7環(huán)境下源碼安裝MySQL5.7的方法
這篇文章主要介紹了CentOS7環(huán)境下源碼安裝MySQL5.7的方法,結(jié)合實(shí)例形式分析了CentoS7環(huán)境下MySQL5.7的下載、編譯、安裝、設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
MySQL配置文件my.cnf優(yōu)化詳解(mysql5.5)
這篇文章主要介紹了MySQL配置文件my.cnf優(yōu)化詳解,需要的朋友可以參考下2014-12-12
手動(dòng)配置phpmyadmin和mysql密碼的兩種方案
這篇文章主要介紹了手動(dòng)配置phpmyadmin和mysql密碼的兩種方案,需要的朋友可以參考下2014-03-03

