十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
MySQL中如何選擇高可用架構(gòu),很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的陽泉網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
一 、高可用架構(gòu)
MySQL Replication
經(jīng)典的主從復制,需要多個步驟手動進行配置。例如,用戶管理、備份恢復、配置復制......MySQL僅提供了核心功能,整體架構(gòu)需要用戶自己決定(大部分情況下需要定制)。在這種情況下,組織或者公司需要使用不同的技術(shù)組件,技術(shù)專家或DBA需要將大量的工作和時間投入到自動化處理。
MySQL InnoDB Cluster
2016年,MySQL推出了MySQL InnoDB Cluster,InnoDB Cluster主要包括MySQL Group Replication(群組成員變化管理、網(wǎng)絡(luò)分區(qū)控制、集群范圍一致性......),MySQL Shell(強有力的接口,自動化整合全部的組件),MySQL Router(應(yīng)用透明路由、負載均衡、自動應(yīng)用故障轉(zhuǎn)移......)以及MySQL Clone(自動化部署成員,完全整合至InnoDB Cluster)。
MySQL InnoDB Replica Set
2020年,MySQL推出MySQL InnoDB Replica Set。該功能基于經(jīng)典的主從復制,完全整合MySQL Shell和MySQL Router。
二、InnoDB Cluster和InnoDB Replica Set
上面簡要介紹了MySQL高可用的過去和現(xiàn)在的解決方案,下面將詳細地介紹InnoDB Cluster和InnoDB Replica Set。
MySQL InnoDB Cluster是MySQL的一體化產(chǎn)品解決方案,具有高可用性和可伸縮性的特點,組件包括MySQL Server、MySQL Shell、MySQL Router和MySQL Group Replication。它的目標是提供一個MySQL一體化產(chǎn)品,全部的組件統(tǒng)一開發(fā),整合全部的組件,并進行全棧測試。此外,簡單易用也是該產(chǎn)品的特色,使用一個統(tǒng)一的客戶端MySQL Shell統(tǒng)一進行集群編排和管理。
MySQL Group Replication
MySQL Group Replication是分布式高可用MySQL數(shù)據(jù)庫,具有容錯、自動故障轉(zhuǎn)移、多節(jié)點更新、自動成員管理、沖突檢測/解決以及防止數(shù)據(jù)丟失功能。它是復制數(shù)據(jù)庫狀態(tài)機理論的實現(xiàn),能夠保證整體寫入順序,保證一致性。集群范圍內(nèi)最終一致,如果使用8.0.14之后的MySQL可以實現(xiàn)會話和全局范圍的讀寫強一致性。MySQL 5.7版本將這個功能GA,并支持全部的MySQL平臺,包括Linux、Windows、Solaris、macOS 、FreeBSD等。
MySQL Group Replication可以用于如下場景:
一致性:數(shù)據(jù)零丟失(RPO=0)
○ 主要成員故障時,數(shù)據(jù)不會丟失。
○ 防止網(wǎng)絡(luò)分區(qū),通過大多數(shù)在線原則防止網(wǎng)絡(luò)分區(qū)。
高可用性:自動故障轉(zhuǎn)移
○ 自動選取主要成員
○ 自動控制網(wǎng)絡(luò)分區(qū)
讀取擴展:
○ 按需增加/刪除節(jié)點
○ 使用流程控制處理延遲
○ 可配置一致性級別
? 最終一致
? 完整一致性
主主環(huán)境:
○ 同時寫入多個成員
? 組內(nèi)順序?qū)懭耄╔COM,PAXOS理論的實現(xiàn))
? 保證一致性
○ 寫入性能良好
? 樂觀鎖(取件于工作負載)
MySQL Router
透明訪問數(shù)據(jù)庫的架構(gòu),在應(yīng)用程序和后端的MySQL數(shù)據(jù)庫之間提供透明的路由連接。
透明客戶端連接路由
○ 負責均衡
○ 應(yīng)用程序連接故障轉(zhuǎn)移
○ 配置簡單
無縫設(shè)計提供簡單的HA客戶端路由
○ 路由作為應(yīng)用程序棧的一部分
整合InnoDB Cluster和InnoDB Replica Set
2個TCP端口用于主節(jié)點和非主節(jié)點通信
MySQL Shell
提供一個數(shù)據(jù)庫管理接口,可以執(zhí)行MySQL相關(guān)的全部任務(wù)。
支持多種語言:JavaScript、Python、SQL
可編寫腳本
支持文檔存儲和關(guān)系型模型
公開完整的開發(fā)和管理API
經(jīng)典的MySQL協(xié)議和X協(xié)議
MySQL Shell簡單易用,可以通過它快速搭建InnoDB Cluster。
創(chuàng)建集群
配置實例
添加實例
啟動MySQL Router
檢查集群狀態(tài)
MySQL InnoDB Replica Set
完全整合MySQL Router
簡單易用的MySQL Shell
配置、增加、移除成員
自動化部署成員(Clone)
主從復制架構(gòu)
○ 手動進行切換和故障轉(zhuǎn)移
○ 異步讀取擴展
○ 簡單的主從架構(gòu)
○ 沒有硬件網(wǎng)絡(luò)要求
? 提供主節(jié)點的可用性
InnoDB Replica Set可以通過克隆自動部署新成員,利用MySQL Shell自動配置用戶和復制,手動配置、增加移除應(yīng)用程序使用的服務(wù)器,MySQL Router或其他代理,并且能夠整合MySQL Router的負載均衡能力。從而避免了以往配置主從復制時所需的繁瑣步驟。
以往需要使用額外的監(jiān)控工具在每臺服務(wù)器上去檢查拓撲狀態(tài),用戶需要負責全部組件的所有配置,每一個設(shè)置都相當于定制化。使用InnoDB Replica Set可以通過MySQL Shell status()來查看拓撲狀態(tài),并且Shell會基于最佳實踐配置服務(wù)器、路由和復制,以防止發(fā)生錯誤。
InnoDB Replica Set是一套標準的解決方案,由MySQL團隊提供支持和質(zhì)量保證,這個方案的優(yōu)點是簡單易用,初學者也可以快速掌握。
三、如何選擇高可用架構(gòu)
最后說明一下如何選擇不同的高可用架構(gòu)。
首先要明確業(yè)務(wù)的需求,高可用性越高意味著成本也越高。可以從以下幾個方面去明確目標:
恢復時間目標(RTO)
服務(wù)從故障中恢復需要多長時間?
恢復點目標(RPO)
服務(wù)在故障中允許丟失的數(shù)據(jù)
故障類型
○ 高可用:單一服務(wù)器故障,網(wǎng)絡(luò)分區(qū)
○ 容災(zāi):整體地域/網(wǎng)絡(luò)故障
○ 人為錯誤:操作失誤,故意破壞
程度
○ 0
○ 秒
○ 分
○ 小時
○ ...
不同業(yè)務(wù)需求對應(yīng)的架構(gòu)
單一地域
RTO=小時
RPO=分
一臺MySQL服務(wù)器
○ 備份
○ 同步日志
單一地域
RTO=小時
RPO=少于1秒
一臺MySQL服務(wù)器
○ 頻繁備份
○ 持續(xù)拉取二進制日志
單一地域
RTO=數(shù)分
RPO=少于1秒
MySQL InnoDB Replica Set
單一地域
RTO=數(shù)秒
RPO=0
MySQL InnoDB Cluster
多地域
地域故障
RTO=數(shù)分
RPO=數(shù)秒
MySQL InnoDB Cluster
○ 配合使用異步復制
多地域
地域故障
RTO=數(shù)分
RPO=0
MySQL InnoDB Cluster 跨地域部署
○ 兩個地域的一致性級別設(shè)置為AFTER,或者三個地域,每個地域具有1-2個成員。
○ 寫入的吞吐量受到影響,寫入事務(wù)需要保證事務(wù)同步。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。