MYSQL高可用-Percona XtraDB Cluster
簡(jiǎn)介
Percona XtraDB Cluster是MySQL高可用性和可擴(kuò)展性的解決方案,Percona XtraDB Cluster提供的特性如下:
1).同步復(fù)制,事務(wù)要么在所有節(jié)點(diǎn)提交或不提交。
2).多主復(fù)制,可以在任意節(jié)點(diǎn)進(jìn)行寫操作。
3).在從服務(wù)器上并行應(yīng)用事件,真正意義上的并行復(fù)制。
4).節(jié)點(diǎn)自動(dòng)配置。
5).數(shù)據(jù)一致性,不再是異步復(fù)制。
?
Percona XtraDB Cluster完全兼容MySQL和Percona Server,表現(xiàn)在:
1).數(shù)據(jù)的兼容性
2).應(yīng)用程序的兼容性:無(wú)需更改應(yīng)用程序
?
1).集群是有節(jié)點(diǎn)組成的,推薦配置至少3個(gè)節(jié)點(diǎn),但是也可以運(yùn)行在2個(gè)節(jié)點(diǎn)上。
2).每個(gè)節(jié)點(diǎn)都是普通的mysql/percona服務(wù)器,可以將現(xiàn)有的數(shù)據(jù)庫(kù)服務(wù)器組成集群,反之,也可以將集群拆分成單獨(dú)的服務(wù)器。
3).每個(gè)節(jié)點(diǎn)都包含完整的數(shù)據(jù)副本。
?
優(yōu)點(diǎn)如下:
1).當(dāng)執(zhí)行一個(gè)查詢時(shí),在本地節(jié)點(diǎn)上執(zhí)行。因?yàn)樗袛?shù)據(jù)都在本地,無(wú)需遠(yuǎn)程訪問。
2).無(wú)需集中管理。可以在任何時(shí)間點(diǎn)失去任何節(jié)點(diǎn),但是集群將照常工作,不受影響。
3).良好的讀負(fù)載擴(kuò)展,任意節(jié)點(diǎn)都可以查詢。
?
缺點(diǎn)如下:
1).加入新節(jié)點(diǎn),開銷大。需要復(fù)制完整的數(shù)據(jù)。
2).不能有效的解決寫縮放問題,所有的寫操作都將發(fā)生在所有節(jié)點(diǎn)上。
3).有多少個(gè)節(jié)點(diǎn)就有多少重復(fù)的數(shù)據(jù)。
?
架構(gòu)圖如下:
?
????????????????????????????????????? (圖片來(lái)源官網(wǎng))
Percona XtraDB Cluster與MySQL Replication區(qū)別在于:
分布式系統(tǒng)的CAP理論。
C— 一致性,所有節(jié)點(diǎn)的數(shù)據(jù)一致。
A— 可用性,一個(gè)或多個(gè)節(jié)點(diǎn)失效,不影響服務(wù)請(qǐng)求。
P— 分區(qū)容忍性,節(jié)點(diǎn)間的連接失效,仍然可以處理請(qǐng)求。
任何一個(gè)分布式系統(tǒng),需要滿足這三個(gè)中的兩個(gè)。
MySQL Replication: 可用性和分區(qū)容忍性
Percona XtraDB Cluster: 一致性和可用性
因此MySQL Replication并不保證數(shù)據(jù)的一致性,而Percona XtraDB Cluster提供數(shù)據(jù)一致性。
Percona XtraDB Cluster組件:
Percona XtraDB Cluster基于XtraDB的Percona Server以及包含寫復(fù)制集補(bǔ)丁。使用Galera 2.x library,事務(wù)型應(yīng)用下的通用的多主同步復(fù)制插件。
Galera 2.x新特性有:
1).IST(Incremental State Transfer)增量狀態(tài)傳輸。對(duì)于WAN特別有用。
2).RSU(Rolling Schema Update)旋轉(zhuǎn)更新架構(gòu)。不會(huì)阻止對(duì)表進(jìn)行操作。
局限性
1).目前的復(fù)制僅僅支持InnoDB存儲(chǔ)引擎。任何寫入其他引擎的表,包括mysql.*表將不會(huì)復(fù)制。但是DDL語(yǔ)句會(huì)被復(fù)制的,因此創(chuàng)建用戶將會(huì)被復(fù)制,但是insert into mysql.user…將不會(huì)被復(fù)制的。
2).DELETE操作不支持沒有主鍵的表。沒有主鍵的表在不同的節(jié)點(diǎn)順序?qū)⒉煌?#xff0c;如果執(zhí)行SELECT…LIMIT… 將出現(xiàn)不同的結(jié)果集。
3).在多主環(huán)境下LOCK/UNLOCK TABLES不支持。以及鎖函數(shù)GET_LOCK(), RELEASE_LOCK()…
4).查詢?nèi)罩静荒鼙4嬖诒碇小H绻_啟查詢?nèi)罩?#xff0c;只能保存到文件中。
5).允許最大的事務(wù)大小由wsrep_max_ws_rows和wsrep_max_ws_size定義。任何大型操作將被拒絕。如大型的LOAD DATA操作。
6).由于集群是樂觀的并發(fā)控制,事務(wù)commit可能在該階段中止。如果有兩個(gè)事務(wù)向在集群中不同的節(jié)點(diǎn)向同一行寫入并提交,失敗的節(jié)點(diǎn)將中止。對(duì)于集群級(jí)別的中止,集群返回死鎖錯(cuò)誤代碼(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).
7).XA事務(wù)不支持,由于在提交上可能回滾。
8).整個(gè)集群的寫入吞吐量是由最弱的節(jié)點(diǎn)限制,如果有一個(gè)節(jié)點(diǎn)變得緩慢,那么整個(gè)集群將是緩慢的。為了穩(wěn)定的高性能要求,所有的節(jié)點(diǎn)應(yīng)使用統(tǒng)一的硬件。
9).集群節(jié)點(diǎn)建議最少3個(gè)。2個(gè)也可以運(yùn)行,但是官方不推薦這么做,因?yàn)?個(gè)節(jié)點(diǎn)是為了預(yù)防腦裂。
10).如果DDL語(yǔ)句有問題將破壞集群。建議使用pt-online-schema-change操作DDL。
通過(guò)以上的簡(jiǎn)單了解,相信大家已經(jīng)有了初步認(rèn)識(shí),更加深入的內(nèi)容,推薦童鞋們閱讀官方文檔。下面我們進(jìn)行環(huán)境的搭建與測(cè)試。測(cè)試機(jī)器信息如下:
注意:Percona-XtraDB-Cluster在啟動(dòng)以后會(huì)額外啟動(dòng)端口來(lái)進(jìn)行狀態(tài)檢測(cè),所以請(qǐng)開放相應(yīng)的端口,默認(rèn)是4567端口。我測(cè)試環(huán)境關(guān)閉了iptables。
總結(jié):
Percona XtraDB Cluster現(xiàn)在已經(jīng)有企業(yè)在使用了,我這里只是簡(jiǎn)單的搭建以及測(cè)試,如果線上需要使用我們還需要進(jìn)行相關(guān)壓力測(cè)試。比如使用sysbench,或者tpcc-mysql。
通常我們單獨(dú)使用Percona XtraDB Cluster也沒有任何問題的,如果使用通過(guò)結(jié)合harproxy,或者lvs+keepalived的方式來(lái)使用會(huì)更加的完美。前面說(shuō)到的那些局限性通常我們很少能夠觸發(fā)到,所以使用Percona XtraDB Cluster來(lái)實(shí)現(xiàn)高可用是非常不錯(cuò)的選擇。后續(xù)我會(huì)進(jìn)行一個(gè)壓力測(cè)試對(duì)比。
轉(zhuǎn)載于:https://www.cnblogs.com/luoahong/articles/8043083.html
總結(jié)
以上是生活随笔為你收集整理的MYSQL高可用-Percona XtraDB Cluster的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rman 备份后恢复整个数据库文件的操作
- 下一篇: 安利个数据库工具dbeaver