MySQL資料庫架構——高可用演進
MySQL發展至今,在高可用性方面不斷前進,從最初的非同步複製、半同步複製、群組複製,演進到現在的InnoDB Cluster和InnoDB Replica Set。在這一篇裡將說明各種高可用架構以及其適用的場景。
MySQL Replication
經典的主從複製,需要多個步驟手動進行配置。例如,使用者管理,備份恢復,配置複製......。MySQL僅提供了核心功能,整體架構需要使用者自己決定(大部分情況下需要定製)。在這種情況下,組織或者公司需要使用不同的技術元件,技術專家或DBA需要將大量的工作和時間投入到自動化處理。
MySQL InnoDB Cluster
2016年,MySQL推出了MySQL InnoDB Cluster,InnoDB Cluster主要包括
MySQL Group Replication(群組成員變化管理、網路分割槽控制、叢集範圍一致性......),
MySQL Shell(強有力的介面,自動化整合全部的元件),
MySQL Router(應用透明路由、負載均衡、自動應用故障轉移......)以及MySQL Clone(自動化部署成員,完全整合至InnoDB Cluster)。
MySQL InnoDB Replica Set
2020年,MySQL推出MySQL InnoDB Replica Set。該功能基於經典的主從複製,完全整合MySQL Shell 和 MySQL Router。
上面簡要介紹了MySQL高可用的過去和現在的解決方案,下面將詳細地介紹InnoDB Cluster和InnoDB Replica Set。
MySQL InnoDB Cluster是MySQL的一體化產品解決方案,具有高可用性和可伸縮性的特點,元件包括MySQL Server、MySQL Shell、MySQL Router和MySQL Group Replication。它的目標是提供一個MySQL一體化產品,全部的元件統一開發,整合全部的元件,並進行全棧測試。此外,簡單易用也是該產品的特色,使用一個統一的客戶端MySQL Shell統一進行叢集編排和管理。
MySQL Group Replication是分散式高可用MySQL資料庫,具有容錯、自動故障轉移、多節點更新、自動成員管理、衝突檢測/解決以及防止資料丟失功能。它是複製資料庫狀態機理論的實現,能夠保證整體寫入順序,保證一致性。叢集範圍內最終一致,如果使用8.0.14之後的MySQL可以實現會話和全域性範圍的讀寫強一致性。MySQL5.7版本將這個功能GA,並支援全部的MySQL平臺,包括Linux、Windows、Solaris、macOS 、FreeBSD等。
MySQL Group Replication可以用於如下場景:
一致性:資料零丟失(RPO=0)
-
主要成員故障時,資料不會丟失。
- 防止網路分割槽,透過大多數線上原則防止網路分割槽。
高
可用性:自動故障轉移
-
自動選取主要成員
- 自動控制網路分割槽
讀取擴充套件:
- 按需增加/刪除節點
-
使用流程控制處理延遲
-
可配置一致性級別
- 最終一致
-
完整一致性
主主環境:
- 同時寫入多個成員
-
組內順序寫入(XCOM,PAXOS理論的實現)
- 保證一致性
-
寫入效能良好
- 樂觀鎖(取件於工作負載)
MySQL Router
透明訪問資料庫的架構,在應用程式和後端的MySQL資料庫之間提供透明的路由連線。
- 透明客戶端連線路由
- 負責均衡
-
應用程式連線故障轉移
-
配置簡單
-
無縫設計提供簡單的HA客戶端路由
- 路由作為應用程式棧的一部分
-
整合 InnoDB Cluster 和 InnoDB Replica Set
-
2個TCP埠用於主節點和非主節點通訊
MySQL Shell
提供一個資料庫管理介面,可以執行MySQL相關的全部任務。
-
支援多種語言:JavaScript、Python、SQL
-
可編寫指令碼
-
支援文件儲存和關係型模型
- 公開完整的開發和管理API
- 經典的MySQL協議和X協議
MySQL Shell簡單易用,可以透過它快速搭建InnoDB Cluster。
建立叢集
配置例項
新增例項
啟動MySQL Router
檢查叢集狀態
MySQL InnoDB Replica Set
-
完全整合MySQL Router
-
簡單易用的MySQL Shell
-
配置、增加、移除成員
- 自動化部署成員(Clone)
-
主從複製架構
-
手動進行切換和故障轉移
-
非同步讀取擴充套件
-
簡單的主從架構
- 沒有硬體網路要求
- 提供主節點的可用性
InnoDB Replica Set可以透過克隆自動部署新成員,利用MySQL Shell自動配置使用者和複製,手動配置、增加移除應用程式使用的伺服器,MySQL Router或其他代理,並且能夠整合MySQL Router的負載均衡能力。從而避免了以往配置主從複製時所需的繁瑣步驟。
以往需要使用額外的監控工具在每臺伺服器上去檢查拓撲狀態,使用者需要負責全部元件的所有配置,每一個設定都相當於定製化。使用InnoDB Replica Set可以透過MySQL Shell status()來檢視拓撲狀態,並且Shell會基於最佳實踐配置伺服器、路由和複製,以防止發生錯誤。
InnoDB Replica Set是一套標準的解決方案,由MySQL團隊提供支援和質量保證,這個方案的優點是簡單易用,初學者也可以快速掌握。
放個影片演示瞭解一下:
最後說明一下如何選擇不同的高可用架構。
首先要明確業務的需求,高可用性越高意味著成本也越高。可以從以下幾個方面去明確目標:
-
恢復時間目標(RTO)
- 服務從故障中恢復需要多長時間?
-
恢復點目標(RPO)
-
服務在故障中允許丟失的資料
-
故障型別
-
高可用:單一伺服器故障,網路分割槽
-
容災:整體地域/網路故障
-
人為錯誤:操作失誤,故意破壞
- 程度
-
0
- 秒
- 分
- 小時
- ...
不同業務需求對應的架構
單一地域
- RTO=小時
- RPO=分
-
一臺MySQL伺服器
-
備份
-
同步日誌
單一地域
-
RTO=小時
- RPO=少於1秒
-
一臺MySQL伺服器
- 頻繁備份
- 持續拉取二進位制日誌
單一地域
-
RTO=數分
-
RPO=少於1秒
-
MySQL InnoDB Replica Set
-
單一地域
-
RTO=數秒
-
RPO=0
-
MySQL InnoDB Cluster
多地域
-
地域故障
-
RTO=數分
-
RPO=數秒
-
MySQL InnoDB Cluster
-
配合使用非同步複製
多地域
-
地域故障
-
RTO=數分
-
RPO=0
-
MySQL InnoDB Cluster 跨地域部署
- 兩個地域的一致性級別設定為AFTER,或者三個地域,每個地域具有1-2個成員
- 寫入的吞吐量受到影響,寫入事務需要保證事務同步
以上是關於MySQL高可用性架構的內容,使用者可以根據不同的需求選擇適合自己的架構。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29863023/viewspace-2756879/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 郭憶:網易資料庫高可用架構最新進展!資料庫架構
- 【恩墨學院】美團點評資料庫高可用架構的演進與設想資料庫架構
- MySQL資料庫實現高可用架構之MHA的實戰MySql資料庫架構
- MySQL資料庫各場景主從高可用架構實戰MySql資料庫架構
- Mysql高可用架構方案MySql架構
- MySQL 高可用架構之 MMM 架構MySql架構
- MySQL資料庫高可用方案MySql資料庫
- mysql高可用架構MHA搭建MySql架構
- MySQL高可用架構對比MySql架構
- MySQL高可用架構設計分析MySql架構
- 資料治理:資料整合架構的演進架構
- MySQL高可用架構:mysql+keepalived實現MySql架構
- 今日頭條架構演進之路——高壓下的架構演進專題架構
- 基於Centos7.x平臺搭建PhxSQL+Atlas+MySQL高可用資料庫架構CentOSMySql資料庫架構
- MySQL高可用架構-MMM、MHA、MGR、PXCMySql架構
- MySQL 實現高可用架構之 MHAMySql架構
- MySQL高可用架構之Keepalived+主從架構部署MySql架構
- 高可用架構架構
- 高效能、高可用平臺架構演變史架構
- 故事篇:資料庫架構演變之路資料庫架構
- 資深架構師談Redis高可用架構的應用及改進架構Redis
- MySQL主從原理, 高可用架構與高效能架構MySql架構
- mysql高可用架構MHA搭建(centos7+mysql5.7.28)MySql架構CentOS
- 構建MHA實現MySQL高可用叢集架構MySql架構
- 分散式資料庫的架構演變之路分散式資料庫架構
- MySQL 高可用架構 - MHA環境部署記錄MySql架構
- MySQL高可用架構之MHA 原理與實踐MySql架構
- MySQL高可用架構案例篇:UCloud最佳實踐MySql架構Cloud
- 騰訊音樂內容庫資料平臺架構演進實踐架構
- FunData — 電競大資料系統架構演進大資料架構
- mysql資料庫的基礎架構MySql資料庫架構
- 資料基礎架構如何演進,西部資料有話說架構
- 海量資料架構下如何保證Mycat的高可用?架構
- Canal高可用架構部署架構
- 架構演進之「微服務架構」架構微服務
- ES資料庫高可用配置資料庫
- MySQL 中常見的幾種高可用架構部署方案MySql架構
- 京東物流資料同步平臺“資料蜂巢”架構演進之路架構