MySQL高可用各個技術的比較
圖片和資料來源于MYSQL大牛姜承堯老師(MYSQL技術內幕作者)。
數據庫的可靠指的是數據可靠;數據庫可用指的是數據庫服務可用??煽康氖菙祿屠绻ど蹄y行,數據不能丟失;可用的是服務則指服務器不能宕機。
靈活運用MYSQL的各種高可用技術來達到下面各種級別的高可用要求
要達到99.9%:使用MYSQL復制技術
要達到99.99%:使用MYSQL NDB 集群和虛擬化技術
要達到99.999%:使用shared-nothing架構的GEO-REPLICATION和NDB集群技術
Gluster Geo-replication是什么?
Gluster Geo-replication(簡稱geo-replication)是一種異地災備技術,它主要應用于把集群中的一個存儲,近乎即時地(near real-time)透過公網(wan)備份到遠端的機房。
各種高可用級別允許的宕機時間
DRBD:網絡磁盤的RAID1
#p#
方案一:MYSQL主從復制(單活)
- 投票選舉機制較復雜
- MySQL本身沒有提供replication failover的解決方案,自動切換需要依賴MHA腳本
- 可以有多臺從庫,從庫可以做報表和備份
方案二:雙主(單活),failover比單主簡單
同樣,自動切換需要MMM腳本,缺點是某個主掛掉了,他下面的slave同樣掛掉。
#p#
方案三:雙主配SAN存儲(單活)
這個架構跟方案二是一樣的,只不過兩個master之間不需要同步數據,因為他們用的是共享磁盤,這個方案是有錢人方案,無論哪個主掛掉都不會引起其他的slave掛掉,但是SAN存儲死貴。。
像通信行業(yè)中國聯通這些公司有用到,某個主掛掉了,下面的slave不會掛掉。
注意:failover之后不會預熱,數據沒有預先加載到內存中,切換之后一段時間內存儲會有一定的性能影響
方案四:DRBD 雙主配DRBD (單活)
結構跟方案三一樣,***不同的是沒有使用SAN網絡存儲 ,而是使用local disk。由于是實時復制磁盤數據,性能會有影響。人們把DRBD稱為“屌絲的SAN”;POOR MAN'S SAN:窮人的SAN
#p#
方案五:NDB CLUSTER
國內用NDB集群的公司非常少,貌似有些銀行有用。NDB集群不需要依賴第三方組件,全部都使用官方組件,能保證數據的一致性,某個數據節(jié)點掛掉,其他數據節(jié)點依然可以提供服務,管理節(jié)點需要做冗余以防掛掉。
缺點是:管理和配置都很復雜,而且某些SQL語句例如join語句需要避免。
方案六:第三方的Tungsten軟件
使用java編寫,不是MYSQL內置的,同樣是MYSQL數據庫復制,不過他不是用MYSQL內置的組件來做的,不但支持MYSQL數據庫復制也支持異構數據庫的復制,而且對異構數據庫復制支持較好,例如MYSQL復制到ORACLE。
方案七:網易的INNOSQL
類似于SQLSERVER的鏡像高安全模式,High Safety 模式 (也就是同步模式)沒有 witness服務器。
數據庫在Principle的事務,需要馬上得到mirror的確認,才能完成。這種情況下,Mirror和Principle的數據是同步的。
但是因為所有的事務需要mirror的確認,所以性能可能會有所影響。
區(qū)別:innosql的slave可以讀,鏡像的slave(從庫)不可讀。保證數據不會丟失,數據的高可靠性。
mysql5.7開始支持這種模式
總結
每種方案都有不同的特點,配置和應用場景也各有不同,有些偏向于成本低的,有些偏向于成本高的,有些偏向于數據的可靠性,有些則偏向于數據庫的可用性。反正各個方案都各有優(yōu)缺點,DBA要結合自己公司的業(yè)務情況進行選擇合適自己業(yè)務情況的高可用方案。