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