摘要:數(shù)據(jù)一致性,不再是異步復制。的配置文件是建立一個服務,監(jiān)控特定的對象例如元數(shù)據(jù)等等的鍵值以及當值發(fā)生變化時執(zhí)行某些操作。
各種MySQL數(shù)據(jù)庫集群高可用方案
https://bobcares.com/blog/mys...
Redundant devices to combat hardware failures
Shared storage with SAN and NAS
Storage replication using DRBD
MySQL replication to avoid single point failures
MySQL clustering
Galera multi-master MySQL replication
Percona XtraDB Cluster
PXC技術(shù)概要Percona XtraDB Cluster與MySQL Replication區(qū)別在于:
分布式系統(tǒng)的CAP理論:
C:一致性,所有節(jié)點的數(shù)據(jù)一致;
A:可用性,一個或多個節(jié)點失效,不影響服務請求;
P:分區(qū)容忍性,節(jié)點間的連接失效,仍然可以處理請求;
任何一個分布式系統(tǒng),需要滿足這三個中的兩個。
MySQLReplication:可用性和分區(qū)容忍性;
Percona XtraDBCluster:一致性和可用性。
因此MySQL Replication并不保證數(shù)據(jù)的一致性,而Percona XtraDB Cluster提供數(shù)據(jù)一致性。
Percona XtraDBCluster是MySQL高可用性和可擴展性的解決方案。Percona XtraDBCluster提供的特性有:
同步復制,事務要么在所有節(jié)點提交或不提交。
多主復制,可以在任意節(jié)點進行寫操作。
在從服務器上并行應用事件,真正意義上的并行復制。
節(jié)點自動配置。
數(shù)據(jù)一致性,不再是異步復制。
Percona XtraDBCluster完全兼容MySQL和Percona Server,表現(xiàn)在:
數(shù)據(jù)的兼容性
應用程序的兼容性:無需更改應用程序
它的集群特點是:
集群是有節(jié)點組成的,推薦配置至少3個節(jié)點,但是也可以運行在2個節(jié)點上。
每個節(jié)點都是普通的mysql/percona服務器,可以將現(xiàn)有的數(shù)據(jù)庫服務器組成集群,反之,也可以將集群拆分成多帶帶的服務器。
每個節(jié)點都包含完整的數(shù)據(jù)副本。
優(yōu)點如下:
當執(zhí)行一個查詢時,在本地節(jié)點上執(zhí)行。因為所有數(shù)據(jù)都在本地,無需遠程訪問。
無需集中管理。可以在任何時間點失去任何節(jié)點,但是集群將照常工作。
良好的讀負載擴展,任意節(jié)點都可以查詢。
缺點如下:
加入新節(jié)點,開銷大。需要復制完整的數(shù)據(jù)。
不能有效的解決寫縮放問題,所有的寫操作都將發(fā)生在所有節(jié)點上。
有多少個節(jié)點就有多少重復的數(shù)據(jù)。
PXC的傳統(tǒng)物理機三節(jié)點部署簡要說明那么這樣一個MySQL集群方案,在我們傳統(tǒng)的物理機環(huán)境的安裝部署,是否會很復雜呢?熟悉其組件及工作原理之后,安裝倒是不特別復雜。我們以CentOS系列為范例,簡要看看其安裝配置流程:
Percona作為標準的Catalog項目出現(xiàn)在Rancher Server1.1版本之后,如果你使用的是較低的版本,例如v1.0.1,在數(shù)據(jù)庫分類里將只會見到MariaDB Galera Cluster項目。當然你可以在低版本中添加自定義的Catalog,例如https://github.com/alanpeng/M...
部署好的Percona XtraDB Cluster集群宿主機結(jié)構(gòu)如圖所示(除了拉起Percona-XtraDB-Cluster集群之外,還在其前端加入了一個Rancher內(nèi)置的LoadBalancer):
將此Catalog項目打開,我們可以看見其docker-compose.yml及rancher-compose.yml文件的內(nèi)容如下:
Stack/Service結(jié)構(gòu)示意圖:
這里的12個容器角色如下:Node節(jié)點3個,運行confd服務;ClusterCheck節(jié)點3個分別監(jiān)聽集群節(jié)點健康狀態(tài);Server節(jié)點3個,是數(shù)據(jù)庫主服務應用;3個Data作為數(shù)據(jù)卷共享的提供,是sidekick容器類型。
所有容器列表如下:
數(shù)據(jù)庫連接驗證測試:
從前端負載均衡宿主機的IP訪問數(shù)據(jù)庫,執(zhí)行語句show status like "wsrep%";返回的結(jié)果表明數(shù)據(jù)庫集群節(jié)點數(shù)為3,同步復制狀態(tài)正常。
在Rancher平臺如何靈活運用Confd+Metadata進行配置管理以上PXC集群運行于容器之上并被Rancher平臺管理,其中的具體實現(xiàn)細節(jié)較多,因為我們需要這樣的數(shù)據(jù)庫集群滿足彈性伸縮的要求,舉例來說也就是可以動態(tài)的將集群節(jié)點數(shù)由3個增加至更多,那么必然每個節(jié)點的配置文件需要動態(tài)的進行更新,要做到這一點,我們可以結(jié)合confd與Rancher的metadata元數(shù)據(jù)服務來實現(xiàn),當然這里涉及到數(shù)據(jù)庫集群專有的技術(shù),giddyup專有工具的結(jié)合也是必不可少的選擇。
1. 首先給出整個項目的代碼文件供參考
分3個模塊:
https://github.com/Flowman/do...
https://github.com/Flowman/do...
https://github.com/Flowman/do...
2. 數(shù)據(jù)庫集群配置工具giddyup
https://github.com/cloudnauti...
在數(shù)據(jù)庫集群服務的啟動腳本https://github.com/Flowman/do...里我們使用了giddyup工具,其中比較重要的命令有以下項:
獲取集群節(jié)點成員IP列表,請參照本篇前面章節(jié)中my.cnf文件中提及的wsrep_cluster_address=gcomm:// …
獲取集群運行狀態(tài)并返回節(jié)點規(guī)模數(shù)
探測當前容器節(jié)點是否屬于數(shù)據(jù)庫集群的bootstrap角色(leader)
3. 配置管理工具confd
https://github.com/kelseyhigh... 它對rancher提供了很好的支持,能夠與Rancher的metadata元數(shù)據(jù)服務緊密結(jié)合:
如何與元數(shù)據(jù)結(jié)合?confd有兩個重要文件,一個是模板文件,一個是配置文件,其執(zhí)行過程就是從backends對象例如Rancher的metadata獲取數(shù)據(jù),然后將其更新至真正被服務調(diào)用的配置文件中去:
這里的pxc.cnf.tmpl文件是模板文件,而pxc.toml文件則是配置文件。confd的配置文件是建立一個服務,監(jiān)控特定的backends對象(例如etcd、rancher元數(shù)據(jù)等等)的鍵值以及當值發(fā)生變化時執(zhí)行某些操作。其文件格式是TOML,易于使用,其規(guī)則跟人的直覺也相近。我們可以看到容器執(zhí)行期間,Rancher預先在rancher-compose.yml中定義的metadata元數(shù)據(jù)通過confd將一些重要參數(shù)傳遞給了數(shù)據(jù)庫集群服務的配置文件my.cnf:
我們知道Rancher的metadata元數(shù)據(jù)是有版本差異的,那么如何知道在這個PXC數(shù)據(jù)庫集群里它調(diào)用的元數(shù)據(jù)從何而來呢?
看一下Dockerfile的內(nèi)容我們不難發(fā)現(xiàn)
https://github.com/Flowman/do...
這里從mysql元數(shù)據(jù)服務項返回的值正是我們在rancher-compose.yml文件中預先定義好了的:
從Percona XtraDB Cluster這個Rancher的Catalog項目,我們可以較為全面的理解confd配置服務是如何與Rancher的元數(shù)據(jù)服務進行結(jié)合的,這樣就能實現(xiàn)較為復雜的數(shù)據(jù)庫集群應用完全自動化的實現(xiàn)彈性伸縮功能。
Q & AQ:如果在k8s環(huán)境部署mysql集群,用什么方案比較好?
A:Rancher的k8s里面的模板沒有cattle環(huán)境的模板多,Cattle的模板是沒有辦法直接拿到K8s環(huán)境里面來用的,k8s的模板是k8s的yaml文件結(jié)合rancher-compose文件。Rancher官網(wǎng)blog有一篇是關于如何轉(zhuǎn)換Prometheus的cattle模板成為k8s模板的,有興趣的話可以參考一下:http://rancher.com/converting...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27982.html
摘要:數(shù)據(jù)一致性,不再是異步復制。的配置文件是建立一個服務,監(jiān)控特定的對象例如元數(shù)據(jù)等等的鍵值以及當值發(fā)生變化時執(zhí)行某些操作。 各種MySQL數(shù)據(jù)庫集群高可用方案 showImg(https://segmentfault.com/img/bVHnIt?w=800&h=1723); https://bobcares.com/blog/mys... Redundant devices to c...
摘要:正文以下,我將闡述一下,怎么樣在多主機網(wǎng)絡中運行。舉個例子,當你在主機上運行發(fā)現(xiàn)服務的時候,你可以這樣啟動節(jié)點這個節(jié)點就會自己把自己注冊到發(fā)現(xiàn)服務中去,并且加入名為的集群中。 譯者前言 Percona 所維護的XtraDB 是mysql的一個分支,使用了性能比innodb更加出色的xtrodb驅(qū)動,XtraDB-Cluster產(chǎn)品,是其集群化的方案,方案內(nèi)容,請自行g(shù)oogle。最近X...
摘要:正文以下,我將闡述一下,怎么樣在多主機網(wǎng)絡中運行。舉個例子,當你在主機上運行發(fā)現(xiàn)服務的時候,你可以這樣啟動節(jié)點這個節(jié)點就會自己把自己注冊到發(fā)現(xiàn)服務中去,并且加入名為的集群中。 譯者前言 Percona 所維護的XtraDB 是mysql的一個分支,使用了性能比innodb更加出色的xtrodb驅(qū)動,XtraDB-Cluster產(chǎn)品,是其集群化的方案,方案內(nèi)容,請自行g(shù)oogle。最近X...
閱讀 1984·2021-11-25 09:43
閱讀 666·2021-10-11 10:58
閱讀 1742·2019-08-30 15:55
閱讀 1737·2019-08-30 13:13
閱讀 746·2019-08-29 17:01
閱讀 1851·2019-08-29 15:30
閱讀 806·2019-08-29 13:49
閱讀 2182·2019-08-29 12:13