MySQL高可用 PXC簡介

2021-10-23 02:22:33 字數 2187 閱讀 2493

pxc簡介:galera產品是以galera cluster方式為mysql提高高可用集群解決方案的。galera cluster就是整合了galera外掛程式的mysql集群。galera replication是codership提供的mysql資料同步方案,具有高可用性,方便擴充套件,並且可以實現多個mysql節點間的資料同步複製與讀寫,可保障資料庫的服務高可用及資料強一致性。

pxc屬於一套近乎完美的mysql高可用集群解決方案,相比那些比較傳統的基於主從複製模式的集群架構mha和mm+keepalived,galera cluster最突出特點就是解決了詬病已久的資料複製延遲問題,基本上可以達到實時同步。而且節點與節點之間,他們相互的關係是對等的。本身galera cluster也是一種多主架構。galera cluster最關注的是資料的一致性,對待事物的行為時,要麼在所有節點上執行,要麼都不執行,它的實現機制決定了它對待一致性的行為非常嚴格,這也能非常完美的保證mysql集群的資料一致性;

對galera cluster的封裝有兩個,雖然名稱不同,但實質都是一樣的,使用的都是galera cluster。乙個mysql的創始人在自己全新的mariadb上實現的mariadb cluster;乙個是著名的mysql服務和工具提供商percona實現的percona xtradb cluster,簡稱pxc

要搭建pxc架構至少需要3個mysql例項來組成乙個集群,三個例項之間不是主從模式,而是各自為主,所以三者是對等關係,不分從屬,這就叫multi-master架構。客戶端寫入和讀取資料時,連線哪個例項都是一樣的。讀取到的資料時相同的,寫入任意乙個例項之後,集群自己會將新寫入的資料同步到其他例項上,這種架構不共享任何資料,是一種高冗餘架構。

--:galera cluster的功能有7點,如下:

①:實現mysql資料庫集群架構的高可用性和資料的 強一致性。

②:完成了真正的多節點讀寫的集群方案。

③:改善了傳統意義上的主從複製延遲問題,基本上達到了實時同步。

④:新加入的節點可以自動部署,無須提供手動備份,維護起來很方便。

⑤:由於是多節點寫入,所以資料庫故障切換很容易。

pxc的缺點:

首先要規範集群中節點的數量,整個集群中節點數控制在最少3個、最多8個範圍內。最少3個節點是為了防止出現腦裂現象,因為只有在兩個節點下才會出現此現象。腦裂現象的標誌就是輸入任何命令、返回結果都是unkown command,節點在集群中,會因為新節點的加入或者故障,同步失效等而發生狀態的切換。

--節點狀態變化階段:

open:節點啟動成功,嘗試連線到集群。

primary:節點已處於集群中,在新節點加入時,選取donor進行資料同步時會產生的狀態。

joiner:節點處於等待接收同步檔案時的狀態。

joined:節點完成資料同步的工作,嘗試保持和集群進度一致。

synced:節點正常提供服務的狀態,表示已經同步完成並和集群進度保持一致。

doner:節點處於為新加入的節點提供全量資料時的狀態。

注意:doner節點就是資料的貢獻者,如果乙個新節點加入集群,此時又需要大量資料的sst傳輸,就有可能因此而拖垮整個集群的效能。所以在生產環境中,如果資料量小,還可以使用sst全量傳輸,但如果資料量很大就不建議使用這種方式了。可以考慮先建立主從關係,在加入集群。

pxc有兩種節點的資料傳輸方式:一種叫sst全量傳輸,另一種叫ist增量傳輸。

sst傳輸有:xtrabackup、mysqldump和rsync三種方法。而增量傳輸就一種方法就是xtrabackup。但生產環境中一般資料量不大的時候,可以使用sst全量傳輸,但也只實現xtrabackup方法。

在pxc中還有乙個特別重要的模組就是gcache。它的核心功能就是每個節點快取當前最新的寫集。如果有新節點加入進來,就可以把新資料的增量傳遞給新節點,而不需要再使用sst方式了。這樣可以讓節點更快地加入集群中。涉及引數如下:

gcache.size:代表用來快取寫集增量資訊的大小。它的預設大小是128mb,通過wsrep_provider_options引數設定。建議調整為2gb-4gb範圍,足夠的空間便於快取更多的增量資訊。

gcache.mem_size:代表gcache中記憶體快取的大小,適度調大可以提高整個集群的效能。

gcache.page_size:可以理解為如果記憶體不夠用(gcache不足),就直接將寫集寫入磁碟檔案中。

--:pxc的工作模式:

nginx實現mysql高可用 MySQL高可用

3,nfs高可用,keepalive使用指令碼 自己編寫 vrrp script 通過指令碼返回的狀態 根據keepalive自定 判斷drbd的主從,然後飄動vip,同時再觸發指令碼,切換drbd的主從關係。drbd不能自動切換 4 redis一主兩從,使用哨兵來實現主從切換。配置哨兵的檔案,切換...

canal與mysql高可用 CANAL 高可用

canal 是阿里巴巴mysql資料庫binlog的增量訂閱 消費元件,你可以從這兒了解它.canal 的常見使用場景之一就是資料同步,例如我們使用 canal 就是為了把 mysql 的資料同步到 elasticsearch 中.使用 canal 做資料同步的時候無疑會涉及到三個部分 資料來源 m...

mysql集群高可用架構

前言 高可用架構對於網際網路服務基本是標配,無論是應用服務還是資料庫服務都需要做到高可用。對於乙個系統而言,可能包含很多模組,比如前端應用,快取,資料庫,搜尋,訊息佇列等,每個模組都需要做到高可用,才能保證整個系統的高可用。對於資料庫服務而言,高可用可能更複雜,對使用者的服務可用,不僅僅是能訪問,還...