我們一直在等待的 MySQL 讀/寫分離功能 現在終於可以使用了!
在規模上,我們在副本之間分配讀取,但這必須在應用程式中以某種方式進行管理:指向在某個地方寫入並在其他地方讀取。
在 MySQL 8.2 中,MySQL Router 現在能夠識別讀取和寫入,並將它們路由到主例項(如果是 InnoDB 叢集),或者路由到非同步複製源以進行寫入,將其路由到輔助例項或副本以進行讀取。
為了說明這一點,我部署了最簡單的架構:MySQL InnoDB ReplicaSet。
MySQL InnoDB ReplicaSet
這只是一個複製源例項和一個(或多個)非同步副本:
這是 MySQL Shell 中 ReplicaSet 物件的狀態:
啟動 MySQL Router 8.2
讓我們配置(啟動)MySQL Router:
我們還可以在 MySQL Shell ReplicaSet 物件中看到 Router:
使用讀/寫埠 ( 6450 ) 連線到 MySQL:
我們可以看到,預設情況下,如果執行讀操作,我們將訪問到副本,但如果啟動事務,我們將到達複製源(主),而無需更改埠並使用相同的連線。
我們還可以看到使用只讀事務時的差異:
我們可以在 MySQL Router 的配置檔案中看到生成的讀寫分離的設定:
[routing:bootstrap_rw_split]
bind_address=0.0.0.0
bind_port=6450
destinations=metadata-cache://myreplica/?role=PRIMARY_AND_SECONDARY
routing_strategy=round-robin
protocol=classic
connection_sharing=1
client_ssl_mode=PREFERRED
server_ssl_mode=PREFERRED
access_mode=auto
您還可以使用命令 ROUTER SET access_mode=
在會話中定義要訪問的例項型別:
結論
綜上所述,MySQL Router 8.2 支援讀寫分離。這是一項很有價值的功能,可以最佳化資料庫效能和可擴充套件性,而無需對應用程式進行任何更改。
透過此配置,您可以將所有讀取流量定向到只讀例項,並將所有寫入流量定向到讀寫例項。
此功能不僅增強了整體使用者體驗,還簡化了資料庫管理和部署。
讀寫例項是主例項或源例項。只讀例項是副本(InnoDB Cluster ReplicaSet、ReplicaSet 輔助例項或副本群集中的輔助例項)。
原文:https://blogs.oracle.com/mysql/post/mysql-82-transparent-readwrite-splitting
譯文:https://opensource.actionsky.com/
更多文章推薦:
1.Spring Boot 3.x 教程,太全了!
2.2,000+ 道 Java面試題及答案整理(2024最新版)
3.免費獲取 IDEA 啟用碼的 7 種方式(2024最新版)
覺得不錯,別忘了隨手點贊+轉發哦!