MySQL 官宣:支援讀寫分離了!!

Java技术栈發表於2024-10-09

我們一直在等待的 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最新版)

覺得不錯,別忘了隨手點贊+轉發哦!

相關文章