共計 1526 個字符,預計需要花費 4 分鐘才能閱讀完成。
本篇內容主要講解“mysql router 是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“mysql router 是什么”吧!
什么是 MySQL Router?
MySQL Router 是一個介于應用層和 DB 層之間的開源的輕量級中間件,它能夠將前端應用的請求分析轉發給后端 DB 服務器處理,從而實現 DB 的負載均衡,可以說它是先前 MySQL Proxy 的替代品,我們可以在 Github 找到它的源碼。類似的工具有 360 的 Atlas、美團點評的 DBProxy、MyCat 等幾種。
MySQL Router 架構
使用這種架構,前端應用不用直接連接 DB Server,而僅僅是連接到 MySQL Router,能夠很方便地實現數據庫集群的擴展,接下來我們再來看看它的一些其他的主要功能。
MySQL Router 主要功能
1、自動故障轉移
使用 MySQL Router 實現來讀寫分離,前端應用層不需要直連接底層 DB,而是統一連接到 MySQL Router。MySQL Router 對前端應用層是透明的,我們不需要在代碼層做任何處理。應用層會把 MySQL Router 一個正常的 MySQL 實例使用,底層 DB Master 掛了會自動使用 Backup 節點替代,十分方便。
2、DB 負載均衡
MySQL 中間件通過類似連接池的方式,將請求按照一定的規則分發給底層數據庫,從而實現 DB 的讀寫分離、高可用。
MySQL Router 用于取代 MySQL Proxy,建議 MySQL Router 與應用程序部署在一臺機器。應用程序像訪問 MySQL 一樣訪問 MySQL Proxy,由 MySQL Proxy 將數據轉發給后端的 MySQL。支持各種操作系統。
MySQL Router 的工作模式
read-write
用于多主服務器,個人感覺也可用于主備,用于多主可以避免腦裂問題,但實際上多主只有一個為 Active 狀態。并且 MySQL 的主從和多主復制恢復起來都比較麻煩,需要手工操作。相比之下 MySQL Group Replication 提供了更簡單的集群自動維護方案。
所有請求被發送到第一個服務器,只在第一個服務器宕機后才會使用后續的第二個服務器。
不支持宕機服務器恢復檢測
以下兩種情況下將無法使用
從先宕機,然后恢復,主再宕機
主先宕機,然后恢復,從再宕機
[routing:example_strategy]
bind_port = 7001
destinations = master1.example.com,master2.example.com,master3.example.com
mode = read-writ
read-only
用于路由從服務器集群。
每個請求用輪詢方式訪問所有服務器。如果一個服務器宕機,會嘗試使用下一個服務器。如果所有服務器宕機,路由將退出。重新可用的服務器會被按照原來的順序重新加入到可用列表
[routing:ro_route]
bind_port = 7002
destinations = slave1.example.com,slave2.example.com,slave3.example.com
mode = read-only
啟動
mysqlrouter –config=/path/to/file/my_router.ini
需要將數據庫連接池的 maxStatements= 0 設置為 0,否則當主機宕機后,連接池將無法在備機上找到對應的 Statement 而報錯。
性能
遠高于 MySQL Proxy,相比較于直連 MySQL 性能損失很小。
到此,相信大家對“mysql router 是什么”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!