十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章主要為大家展示了“MySQL-Proxy有什么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“MySQL-Proxy有什么用”這篇文章吧。
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比南州晴隆網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式南州晴隆網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋南州晴隆地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
MySQL-Proxy是處在你的MySQL數(shù)據(jù)庫(kù)客戶和服務(wù)端之間的程序,它還支持嵌入性腳本語(yǔ)言Lua。這個(gè)代理可以用來(lái)分析、監(jiān)控和變換(transform)通信數(shù)據(jù),它支持非常廣泛的使用場(chǎng)景:
負(fù)載平衡和故障轉(zhuǎn)移處理
查詢分析和日志
SQL宏(SQL macros)
查詢重寫(xiě)(query rewriting)
執(zhí)行shell命令
MySQL Proxy更強(qiáng)大的一項(xiàng)功能是實(shí)現(xiàn)“讀寫(xiě)分離(Read/Write Splitting)”?;镜脑硎亲屩鲾?shù)據(jù)庫(kù)處理事務(wù)性查詢,而從數(shù)據(jù)庫(kù)處理SELECT查詢。數(shù)據(jù)庫(kù)復(fù)制被用來(lái)把事務(wù)性查詢導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫(kù)。
MySQL Proxy處于客戶端應(yīng)用程序和MySQL服務(wù)器之間,通過(guò)截?cái)?、改變并轉(zhuǎn)發(fā)客戶端和后端數(shù)據(jù)庫(kù)之間的通信來(lái)實(shí)現(xiàn)其功能,這和WinGate之類的網(wǎng)絡(luò)代理服務(wù)器的基本思想是一樣的。代理服務(wù)器是和TCP/IP協(xié)議打交道,而要理解MySQL Proxy的工作機(jī)制,同樣要清楚MySQL客戶端和服務(wù)器之間的通信協(xié)議,MySQL Protocol包括認(rèn)證和查詢兩個(gè)基本過(guò)程:
認(rèn)證過(guò)程包括:
客戶端向服務(wù)器發(fā)起連接請(qǐng)求
服務(wù)器向客戶端發(fā)送握手信息
客戶端向服務(wù)器發(fā)送認(rèn)證請(qǐng)求
服務(wù)器向客戶端發(fā)送認(rèn)證結(jié)果
如果認(rèn)證通過(guò),則進(jìn)入查詢過(guò)程:
客戶端向服務(wù)器發(fā)起查詢請(qǐng)求
服務(wù)器向客戶端返回查詢結(jié)果
當(dāng)然,這只是一個(gè)粗略的描述,每個(gè)過(guò)程中發(fā)送的包都是有固定格式的,想詳細(xì)了解MySQL Protocol的同學(xué),可以去這里看看。MySQL Proxy要做的,就是介入?yún)f(xié)議的各個(gè)過(guò)程。首先MySQL Proxy以服務(wù)器的身份接受客戶端請(qǐng)求,根據(jù)配置對(duì)這些請(qǐng)求進(jìn)行分析處理,然后以客戶端的身份轉(zhuǎn)發(fā)給相應(yīng)的后端數(shù)據(jù)庫(kù)服務(wù)器,再接受服務(wù)器的信息,返回給客戶端。所以MySQL Proxy需要同時(shí)實(shí)現(xiàn)客戶端和服務(wù)器的協(xié)議。由于要對(duì)客戶端發(fā)送過(guò)來(lái)的SQL語(yǔ)句進(jìn)行分析,還需要包含一個(gè)SQL解析器。可以說(shuō)MySQL Proxy相當(dāng)于一個(gè)輕量級(jí)的MySQL了,實(shí)際上,MySQL Proxy的admin server是可以接受SQL來(lái)查詢狀態(tài)信息的。
MySQL Proxy通過(guò)lua腳本來(lái)控制連接轉(zhuǎn)發(fā)的機(jī)制。主要的函數(shù)都是配合MySQL Protocol各個(gè)過(guò)程的,這一點(diǎn)從函數(shù)名上就能看出來(lái):
connect_server()
read_handshake()
read_auth()
read_auth_result()
read_query()
read_query_result()
至于為什么采用lua腳本語(yǔ)言,我想這是因?yàn)镸ySQL Proxy中采用了wormhole存儲(chǔ)引擎的關(guān)系吧,這個(gè)蟲(chóng)洞存儲(chǔ)引擎很有意思,數(shù)據(jù)的存儲(chǔ)格式就是一段lua腳本
以上是“MySQL-Proxy有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!