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