JAVA互聯網架構-五大常見的MySQL高可用架構
概述
我們在考慮MySQL數據庫的高可用的架構時,主要要考慮如下幾方面:
如果數據庫發生了宕機或者意外中斷等故障,能儘快恢復數據庫的可用性,儘可能的減少停機時間,保證業務不會因為數據庫的故障而中斷。
用作備份、只讀副本等功能的非主節點的數據應該和主節點的數據實時或者最終保持一致。
當業務發生數據庫切換時,切換前後的數據庫內容應當一致,不會因為數據缺失或者數據不一致而影響業務。
MySQL高可用架構主要有以下幾種特性:
(1).同步複製 Synchronous replication
(2).Active-active multi-master 拓撲邏輯
(3).可對集群中任一節點進行數據讀寫
(4).自動成員控制,故障節點自動從集群中移除
(5).自動節點加入
(6).真正並行的複製,基於行級
(7).直接客戶端連接,原生的 MySQL 接口
(8).每個節點都包含完整的數據副本
(9).多臺數據庫中數據同步由 wsrep 接口實現
第一種:主從複製+讀寫分離
客戶端通過Master對數據庫進行寫操作,slave端進行讀操作,並可進行備份。Master出現問題後,可以手動將應用切換到slave端。
對於數據實時性要求不是特別嚴格的應用,只需要通過廉價的pc server來擴展Slave的數量,將讀壓力分散到多臺Slave的機器上面,即可通過分散單臺數據庫服務器的讀壓力來解決數據庫端的讀性能瓶頸,畢竟在大多數數據庫應用系統中的讀壓力要比寫壓力大的多。這在很大程度上解決了目前很多中小型網站的數據庫壓力瓶頸問題,甚至有些大型網站也在使用類似的方案解決數據庫瓶頸問題。
第二種:Mysql Cluster
MySQL Cluster 由一組計算機構成,每臺計算機上均運行著多種進程,包括 MySQL 服務器,NDB Cluster的數據節點,管理服務器,以及(可能)專門的數據訪問程序。
由於MySQL Cluster架構複雜,部署費時(通常需要DBA幾個小時的時間才能完成搭建),而依靠 MySQL Cluster Manager 只需一個命令即可完成,但 MySQL Cluster Manager 是收費的。並且業內資深人士認為NDB 不適合大多數業務場景,而且有安全問題。因此,使用的人數較少。
第三種:Heartbeat+雙主從複製
heartbeat 是 Linux-HA 工程的一個組件,heartbeat 最核心的包括兩個部分:心跳監測和資源接管。在指定的時間內未收到對方發送的報文,那麼就認為對方失效,這時需啟動資源接管模塊來接管運 行在對方主機上的資源或者服務。
第四種:HeartBeat+DRBD+Mysql
DRBD 是通過網絡來實現塊設備的數據鏡像同步的一款開源 Cluster 軟件,它自動完成網絡中兩個不同服務器上的磁盤同步,相對於 binlog 日誌同步,它是更底層的磁盤同步,理論上 DRDB 適合很多文件型系統的高可用。
第五種:Lvs+keepalived+雙主複製
Lvs 是一個虛擬的服務器集群系統,可以實現 LINUX 平臺下的簡單負載均衡。keepalived 是一個類似於layer3, 4 & 5 交換機制的軟件,主要用於主機與備機的故障轉移,這是一種適用面很廣的負載均衡和高可用方案,最常用於 Web 系統。
總結
隨著人們對數據一致性的要求不斷的提高,越來越多的方法被嘗試用來解決分佈式數據一致性的問題,如MySQL自身的優化、MySQL集群架構的優化、Paxos、Raft、2PC算法的引入等等。
而使用分佈式算法用來解決MySQL數據庫數據一致性的問題的方法,也越來越被人們所接受,一系列成熟的產品如PhxSQL、MariaDB Galera Cluster、Percona XtraDB Cluster等越來越多的被大規模使用。
以上是對MySQL高可用架構總結,分享給大家,希望大家可以瞭解什麼是MySQL高可用架構。覺得收穫的話可以點個關注收藏轉發一波喔,謝謝大佬們支持。(吹一波,233~~)