真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Mysql中怎么讀寫分離

MySQL中怎么讀寫分離,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

公司主營(yíng)業(yè)務(wù):成都做網(wǎng)站、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出常州免費(fèi)做網(wǎng)站回饋大家。

什么是讀寫分離?

Mysql中讀寫分離實(shí)際上就是讓主數(shù)據(jù)庫處理主動(dòng)寫操作,讓從數(shù)據(jù)庫處理主動(dòng)讀操作。我們可以使用mysql-proxy中間件實(shí)現(xiàn)Mysql的讀寫分離,mysql-proxy在這里是作為什么角色呢?實(shí)際上我們可以將mysql-proxy理解為一個(gè)主從數(shù)據(jù)庫之間的代理,它負(fù)責(zé)接受客戶端的請(qǐng)求,然后判斷請(qǐng)求SQL是屬于寫操作還是讀操作,如果屬于讀操作則轉(zhuǎn)發(fā)給從數(shù)據(jù)庫處理請(qǐng)求,如果處于寫操作則轉(zhuǎn)發(fā)給主數(shù)據(jù)庫處理請(qǐng)求。

實(shí)現(xiàn)Mysql讀寫分離

其實(shí)實(shí)現(xiàn)Mysql讀寫分離最簡(jiǎn)單的方案就是開啟主從同步,在后端配置主數(shù)據(jù)庫的連接和從數(shù)據(jù)庫的連接,如果需要處理更新數(shù)據(jù)操作,就是用主數(shù)據(jù)庫連接完成更新操作,如果只是select查詢數(shù)據(jù),則使用從數(shù)據(jù)庫連接從從數(shù)據(jù)庫獲取數(shù)據(jù)。但是通過代碼來管理連接不同的主從數(shù)據(jù)庫太過于繁瑣了,所以Mysql提供了官方的中間件mysql-proxy實(shí)現(xiàn)代理,客戶端只需要請(qǐng)求mysql-proxy的連接池取到一個(gè)連接,至于根據(jù)讀寫操作來選擇不同的主從數(shù)據(jù)庫這些工作就只需要交給mysql-proxy來處理就可以了。所以本篇文章重點(diǎn)介紹如何使用mysql-proxy來實(shí)現(xiàn)Mysql的讀寫分離。


lua安裝

由于mysql-proxy讀寫分離主要通過rw-splitting.lua腳本去實(shí)現(xiàn),所以需要先裝一下lua
/*下載lua并且解壓*/wget http://www.lua.org/ftp/lua-5.1.4.tar.gz && tar zxvf lua-5.1.4.tar.gz/*進(jìn)入lua并且install*/cd lua-5.1.4 && make linux && make install/*導(dǎo)出*/export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm"

mysql-proxy安裝  
   
     
   
   
   /*下載mysql-proxy并且解壓*/
      
    
    wget mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz && tar -zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.g
由于默認(rèn)情況下。數(shù)據(jù)庫連接數(shù)最少要達(dá)到4,才會(huì)開啟讀寫分離。由于mysql-proxy讀寫分離主要通過rw-splitting.lua腳本去實(shí)現(xiàn),所以需要先修改下rw-splitting.lua配置信息,rw-splitting.lua配置文件所處路徑:
   
     
   
   
   /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
Mysql中怎么讀寫分離

可以看到我將最小啟動(dòng)讀寫分離連接數(shù)改成1,然后下一步就可以啟動(dòng)mysql-proxy,啟動(dòng)時(shí)需要指定主從服務(wù)器
./mysql-proxy \--proxy-read-only-backend-addresses=49.232.154.38:3306 \--proxy-backend-addresses=49.235.28.88:3306 \--log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log \--proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua &

Mysql中怎么讀寫分離


接下來我們可以先看下幾個(gè)配置參數(shù)的含義:
  • --proxy-read-only-backend-addresses:配置只讀從數(shù)據(jù)庫

  • --proxy-backend-addresses:配置主服務(wù)器

  • --proxy-lua-scriptrw-splitting.lua腳本路徑

  • &:表示后臺(tái)執(zhí)行mysql-proxy

  • --log-file:日志文件存放路徑

可以看到上面截圖中,我們成功將mysql-proxy啟動(dòng),接下來我們就需要測(cè)試下讀寫分離是否可以生效。首先我們需要保證主從同步已經(jīng)成功配置,而這步操作上一篇我們測(cè)試完全沒問題了。首先我們登錄從數(shù)據(jù)庫關(guān)閉主從同步并查看當(dāng)前test1數(shù)據(jù)表中的現(xiàn)有數(shù)據(jù):

Mysql中怎么讀寫分離


mysql-proxy  端口配置在4040,接下來使用昨天創(chuàng)建用于主從同步的root賬號(hào)登錄4040端口,插入幾條數(shù)據(jù):  
Mysql中怎么讀寫分離

接下來查看主數(shù)據(jù)庫test1數(shù)據(jù)表的數(shù)據(jù):  
Mysql中怎么讀寫分離

然后再查看從數(shù)據(jù)庫test1數(shù)據(jù)表的數(shù)據(jù):  
Mysql中怎么讀寫分離
所以可以發(fā)現(xiàn)我們寫數(shù)據(jù)的時(shí)候是寫入到主數(shù)據(jù)庫中,也就是寫操作已經(jīng)成功分離了。  
然后接著繼續(xù)使用root賬號(hào)查詢test1數(shù)據(jù)表的數(shù)據(jù):  
Mysql中怎么讀寫分離

可以看到查出來的數(shù)據(jù)是從數(shù)據(jù)庫的數(shù)據(jù),因?yàn)榻Y(jié)果只有一條,如果來自于主數(shù)據(jù)庫應(yīng)該有我們剛才新插入的三條數(shù)據(jù),所以可以證明我們的讀操作分離也成功了,到這里我們主從同步和讀寫分離全部配置成功,我們?cè)陧?xiàng)目中就可以使用這個(gè)4040端口的root用戶來代理數(shù)據(jù)庫操作,如果是寫操作則代理到主數(shù)據(jù)庫去執(zhí)行,如果屬于讀操作則代理到從數(shù)據(jù)庫去執(zhí)行,實(shí)現(xiàn)Mysql讀寫分離。

mysql-proxy執(zhí)行流程簡(jiǎn)析

我們這里測(cè)試是為了方便采取一主一從的架構(gòu)去測(cè)試,但是很多時(shí)候后端Mysql服務(wù)不止一個(gè),我們最后來大致了解下mysql-proxy的工作流程:

  • 實(shí)際上客戶端向mysql-proxy發(fā)起連接時(shí)會(huì)調(diào)用connect_server()函數(shù),如果沒有實(shí)現(xiàn)這個(gè)函數(shù),則mysql-proxy默認(rèn)使用輪詢方式找到合適的客戶端代理請(qǐng)求給客戶端。

  • 用戶進(jìn)行賬號(hào)權(quán)限驗(yàn)證時(shí)傳遞賬號(hào)密碼等信息,mysql-proxy會(huì)調(diào)用read_auth()函數(shù),當(dāng)后端mysql服務(wù)向mysql-proxy認(rèn)證結(jié)果時(shí),mysql-proxy則會(huì)調(diào)用read_auth_result()然后給客戶端返回認(rèn)證結(jié)果。

  • 認(rèn)證成功??蛻舳嗣看伟l(fā)起請(qǐng)求mysql-proxy都會(huì)調(diào)用read_query()來處理中間具體轉(zhuǎn)發(fā)的業(yè)務(wù)邏輯,然后在后端mysql服務(wù)向mysql-proxy傳遞查詢結(jié)果時(shí),調(diào)用read_query_result()對(duì)結(jié)果集進(jìn)行一系列處理,最后將結(jié)果集返回給客戶端。

關(guān)于Mysql中怎么讀寫分離問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


分享題目:Mysql中怎么讀寫分離
本文網(wǎng)址:http://weahome.cn/article/pjcodp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部