分享MYSQL中的各种高可用技术(源自姜承尧大牛)
圖片和資料來源于MYSQL大牛姜承堯老師(MYSQL技術內幕作者)
姜承堯:?網易杭州研究院 技術經理 主導INNOSQL的開發
mysql高可用各個技術的比較
數據庫的可靠指的是數據可靠?
數據庫可用指的是數據庫服務可用
可靠的是數據:例如工商銀行,數據不能丟失
可用的是服務:服務器不能宕機
?
?
?
靈活運用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
方案一:MYSQL主從復制(單活)
投票選舉機制,較復雜
MySQL本身沒有提供replication failover的解決方案,自動切換需要依賴MHA腳本
可以有多臺從庫,從庫可以做報表和備份
?
方案二:雙主(單活),failover比單主簡單
同樣,自動切換需要MMM腳本
缺點是某個主掛掉了,他下面的slave同樣掛掉
方案三:雙主配SAN存儲(單活)
?
這個架構跟方案二是一樣的,只不過兩個master之間不需要同步數據,因為他們用的是共享磁盤
這個方案是有錢人方案,無論哪個主掛掉都不會引起其他的slave掛掉,但是SAN存儲死貴。。
像通信行業中國聯通這些公司有用到
某個主掛掉了,下面的slave不會掛掉
注意:failover之后不會預熱,數據沒有預先加載到內存中,切換之后一段時間內存儲會有一定的性能影響
?
方案四:DRBD?雙主配DRBD?(單活)
結構跟方案三一樣,唯一不同的是沒有使用SAN網絡存儲 ,而是使用local disk
由于是實時復制磁盤數據,性能會有影響
人們把DRBD稱為“屌絲的SAN”
POOR MAN'S SAN:窮人的SAN
?
?
?
方案五:NDB CLUSTER
?
國內用NDB集群的公司非常少,貌似有些銀行有用
NDB集群不需要依賴第三方組件,全部都使用官方組件,能保證數據的一致性
某個數據節點掛掉,其他數據節點依然可以提供服務
管理節點需要做冗余以防掛掉
缺點是:管理和配置都很復雜,而且某些SQL語句例如join語句需要避免
?
方案六:第三方的Tungsten軟件
使用java編寫,不是MYSQL內置的
同樣是MYSQL數據庫復制,不過他不是用MYSQL內置的組件來做的
不但支持MYSQL數據庫復制也支持異構數據庫的復制,而且對異構數據庫復制支持較好,例如MYSQL復制到ORACLE
方案七:網易的INNOSQL
類似于SQLSERVER的鏡像高安全模式
High Safety 模式 (也就是同步模式)沒有 witness服務器
數據庫在Principle的事務,需要馬上得到mirror的確認,才能完成。這種情況下,Mirror和Principle的數據是同步的。
但是因為所有的事務需要mirror的確認,所以性能可能會有所影響。
區別:innosql的slave可以讀,鏡像的slave(從庫)不可讀
保證數據不會丟失,數據的高可靠性
?
mysql5.7開始支持這種模式
?
?
總結
每種方案都有不同的特點,配置和應用場景也各有不同
有些偏向于成本低的,有些偏向于成本高的,有些偏向于數據的可靠性,有些則偏向于數據庫的可用性
反正各個方案都各有優缺點,DBA要結合自己公司的業務情況進行選擇合適自己業務情況的高可用方案
?
更多參考資料:
讀寫分離:Amoeba
Ubuntu10下MySQL搭建Amoeba系列(文章索引)
集群技術:數據庫集群技術漫談
Gluster Geo-replication工作原理
?
如有不對的地方,歡迎大家拍磚o(∩_∩)o?
轉載于:https://www.cnblogs.com/123ing/p/3840126.html
總結
以上是生活随笔為你收集整理的分享MYSQL中的各种高可用技术(源自姜承尧大牛)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 172 Factori
- 下一篇: 接触的第二个引擎 scaleform