Mgr架構(gòu)是MySQL的一種集群架構(gòu),MySQL 5.7版本開始引入了這種架構(gòu)。Mgr架構(gòu)由Manager和Agent兩個組成部分構(gòu)成。其中Manager節(jié)點是集群管理節(jié)點,它負責集群中所有節(jié)點的管理和監(jiān)控,而Agent節(jié)點是數(shù)據(jù)節(jié)點,它們負責存儲和處理數(shù)據(jù)。
具體來說,Mgr架構(gòu)中的Manager節(jié)點包含了三個重要的組件:mysql-shell、mysql-router和mysql-server。其中mysql-shell組件是執(zhí)行命令的工具,mysql-router組件是負責將客戶端請求轉(zhuǎn)發(fā)到正確的Agent節(jié)點,mysql-server組件則提供了MySQL數(shù)據(jù)庫服務(wù)。與此同時,每個Agent節(jié)點也安裝了mysql-server,但只是用于存儲和處理數(shù)據(jù)。
Mgr架構(gòu)中的Agent節(jié)點是對等的,它們可以互相檢測狀態(tài)并進行故障轉(zhuǎn)移,保證了數(shù)據(jù)的高可用。在Mgr架構(gòu)中,每個Agent節(jié)點都包含了一個存儲節(jié)點(primary)和多個備份節(jié)點(secondary)。存儲節(jié)點是負責主要的讀寫操作,而備份節(jié)點則會在存儲節(jié)點故障時接管其工作,保證了數(shù)據(jù)的可靠性。
# 查看Mgr架構(gòu)中的Agent節(jié)點狀態(tài) mysqlsh>cluster.checkInstanceState() +-----------------+-----------------+---------+---------+---------------+ | Host | Port | Status | Version | Role | +-----------------+-----------------+---------+---------+---------------+ | 192.168.0.1 | 3306 | ONLINE | 5.7 | PRIMARY | | 192.168.0.2 | 3306 | ONLINE | 5.7 | SECONDARY | | 192.168.0.3 | 3306 | ONLINE | 5.7 | SECONDARY | +-----------------+-----------------+---------+---------+---------------+
Mgr架構(gòu)中的Manager節(jié)點可以連接一個或多個Agent節(jié)點。連接時需要使用mysql-shell組件提供的cluster.connect()函數(shù),并指定Manager節(jié)點IP地址和端口號。通過連接Manager節(jié)點,可以使用mysql-shell提供的各種命令來管理Mgr架構(gòu)集群。
# 連接到Manager節(jié)點 mysqlsh>cluster = dba.createCluster("mycluster", ["192.168.0.1:3306"]) # 查看集群狀態(tài) mysqlsh>cluster.status()
Mgr架構(gòu)的優(yōu)點在于其通用性與可擴展性。Mgr架構(gòu)在安裝配置較為簡單,可擴展性較強,支持多種數(shù)據(jù)中心集群部署,且具備良好的性能和高可用特性,是一種非常優(yōu)秀的MySQL集群架構(gòu)。