91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql中怎么讀寫分離

發布時間:2021-07-13 15:20:53 來源:億速云 閱讀:267 作者:Leah 欄目:大數據

Mysql中怎么讀寫分離,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

什么是讀寫分離?

Mysql中讀寫分離實際上就是讓主數據庫處理主動寫操作,讓從數據庫處理主動讀操作。我們可以使用mysql-proxy中間件實現Mysql的讀寫分離,mysql-proxy在這里是作為什么角色呢?實際上我們可以將mysql-proxy理解為一個主從數據庫之間的代理,它負責接受客戶端的請求,然后判斷請求SQL是屬于寫操作還是讀操作,如果屬于讀操作則轉發給從數據庫處理請求,如果處于寫操作則轉發給主數據庫處理請求。

實現Mysql讀寫分離

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


lua安裝

由于mysql-proxy讀寫分離主要通過rw-splitting.lua腳本去實現,所以需要先裝一下lua
/*下載lua并且解壓*/wget http://www.lua.org/ftp/lua-5.1.4.tar.gz && tar zxvf lua-5.1.4.tar.gz/*進入lua并且install*/cd lua-5.1.4 && make linux && make install/*導出*/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
由于默認情況下。數據庫連接數最少要達到4,才會開啟讀寫分離。由于mysql-proxy讀寫分離主要通過rw-splitting.lua腳本去實現,所以需要先修改下rw-splitting.lua配置信息,rw-splitting.lua配置文件所處路徑:
   
     
   
   
   /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
Mysql中怎么讀寫分離

可以看到我將最小啟動讀寫分離連接數改成1,然后下一步就可以啟動mysql-proxy,啟動時需要指定主從服務器
./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中怎么讀寫分離


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

  • --proxy-backend-addresses:配置主服務器

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

  • &:表示后臺執行mysql-proxy

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

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

Mysql中怎么讀寫分離


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

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

然后再查看從數據庫test1數據表的數據:  
Mysql中怎么讀寫分離
所以可以發現我們寫數據的時候是寫入到主數據庫中,也就是寫操作已經成功分離了。  
然后接著繼續使用root賬號查詢test1數據表的數據:  
Mysql中怎么讀寫分離

可以看到查出來的數據是從數據庫的數據,因為結果只有一條,如果來自于主數據庫應該有我們剛才新插入的三條數據,所以可以證明我們的讀操作分離也成功了,到這里我們主從同步和讀寫分離全部配置成功,我們在項目中就可以使用這個4040端口的root用戶來代理數據庫操作,如果是寫操作則代理到主數據庫去執行,如果屬于讀操作則代理到從數據庫去執行,實現Mysql讀寫分離。

mysql-proxy執行流程簡析

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

  • 實際上客戶端向mysql-proxy發起連接時會調用connect_server()函數,如果沒有實現這個函數,則mysql-proxy默認使用輪詢方式找到合適的客戶端代理請求給客戶端。

  • 用戶進行賬號權限驗證時傳遞賬號密碼等信息,mysql-proxy會調用read_auth()函數,當后端mysql服務向mysql-proxy認證結果時,mysql-proxy則會調用read_auth_result()然后給客戶端返回認證結果。

  • 認證成功。客戶端每次發起請求mysql-proxy都會調用read_query()來處理中間具體轉發的業務邏輯,然后在后端mysql服務向mysql-proxy傳遞查詢結果時,調用read_query_result()對結果集進行一系列處理,最后將結果集返回給客戶端。

關于Mysql中怎么讀寫分離問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

图木舒克市| 金川县| 寿光市| 通许县| 乌拉特后旗| 易门县| 仪征市| 玉山县| 康保县| 台北县| 宁明县| 朝阳市| 江阴市| 泌阳县| 瓮安县| 普安县| 长泰县| 阳曲县| 大渡口区| 永新县| 白沙| 绥芬河市| 宕昌县| 阳山县| 和顺县| 新干县| 佛学| 襄汾县| 柳江县| 高雄县| 河东区| 赣榆县| 桐乡市| 枣庄市| 桃园县| 临海市| 方正县| 凌源市| 普格县| 武威市| 景宁|