邢志峰
[摘 要]近年來,虛擬化技術(shù)已在企業(yè)中得到了廣泛應(yīng)用,越來越多的Web應(yīng)用程序使用MySQL作為數(shù)據(jù)的管理和存儲,數(shù)據(jù)庫的高可用、數(shù)據(jù)安全、負(fù)載均衡成為了企業(yè)關(guān)注的重點(diǎn)。本文以河鋼集團(tuán)承鋼公司企業(yè)內(nèi)部的虛擬化平臺為基礎(chǔ),以開源的Galera Cluster for MySQL為解決方案,搭建一套基于同步復(fù)制的多主MySQL集群。其特點(diǎn)是使用簡單,沒有單點(diǎn)故障,可用性高,能很好地保證業(yè)務(wù)不斷增長時數(shù)據(jù)的安全性和集群的擴(kuò)展性。
[關(guān)鍵詞]虛擬化;MySQL數(shù)據(jù)庫;集群搭建
doi:10.3969/j.issn.1673 - 0194.2017.12.086
[中圖分類號]TP311.1 [文獻(xiàn)標(biāo)識碼]A [文章編號]1673-0194(2017)12-0-02
1 虛擬化技術(shù)和ESXI的介紹
虛擬化,是指通過虛擬化技術(shù)將一臺計(jì)算機(jī)虛擬為多臺邏輯計(jì)算機(jī)。在一臺計(jì)算機(jī)上同時運(yùn)行多個邏輯計(jì)算機(jī),每個邏輯計(jì)算機(jī)可運(yùn)行不同的操作系統(tǒng),且應(yīng)用程序都可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互不影響,從而顯著提高計(jì)算機(jī)的工作效率。目前,虛擬化技術(shù)越來越成熟,企業(yè)為節(jié)約成本,只需購買配置較高的服務(wù)器安裝虛擬操作系統(tǒng),就能把一臺服務(wù)器當(dāng)做多臺服務(wù)器進(jìn)行使用,既經(jīng)濟(jì)實(shí)用,又管理方便。
ESXI是直接運(yùn)行在裸機(jī)上的高性能、高可用性的系統(tǒng)架構(gòu),它給多臺虛擬機(jī)提供CPU、內(nèi)存、存儲、網(wǎng)絡(luò)資源,Windows平臺的PC機(jī)可以通過vSphere客戶端軟件進(jìn)行遠(yuǎn)程訪問和管理。
ESXI的主要特性如下:
(1)可靠性和安全性,ESXI體系結(jié)構(gòu)基于Linux的控制臺操作系統(tǒng),實(shí)現(xiàn)可維護(hù)性和基于代理的合作伙伴集成,并直接在核 VMkernel中實(shí)現(xiàn)了必備的管理功能,消除了與通用操作系統(tǒng)相關(guān)的安全漏洞,提高了安全性和可靠性。
(2)簡化部署和配置,新的ESXI體系結(jié)構(gòu)的配置項(xiàng)較少,因此可以極大地簡化部署和配置,且更容易保持一致性。
(3)減少管理開銷,ESXI體系結(jié)構(gòu)采用基于API的合作伙伴集成模型,因此,不再需要安裝和管理第三方管理代理。利用遠(yuǎn)程命令行腳本編寫環(huán)境,可以自動執(zhí)行日常任務(wù)。
(4)虛擬機(jī)的備份與恢復(fù)功能,ESXI提供多種的備份與恢復(fù)功能,如快照、克隆、模板的導(dǎo)入和導(dǎo)出等。
(5)物理機(jī)、虛擬機(jī)的遷移,VMware Converter是一款能將物理電腦系統(tǒng)、VMware其他版本虛擬機(jī)鏡像,或第三方虛擬機(jī)鏡像轉(zhuǎn)化為一個虛擬機(jī)映像文件的工具,且生成的映像可以在該公司的VMware虛擬機(jī)軟件中使用。
2 MySQL數(shù)據(jù)庫集群的搭建
2.1 MySQL Galera Cluster 介紹
Galera Cluster是在名為WSRep(集合寫入式復(fù)制,Write Set Replication)的更通用的API基礎(chǔ)之上開發(fā)而成的。WSRep API是個獨(dú)立的開源項(xiàng)目,由Codership發(fā)起,它在數(shù)據(jù)庫服務(wù)器和數(shù)據(jù)復(fù)制插件之間定義了一個接口。MySQL-WSRep是MySQL的一個補(bǔ)丁,它在數(shù)據(jù)庫服務(wù)器中實(shí)現(xiàn)了WSRep API接口。安裝這個補(bǔ)丁之后,MySQL就可以啟動WSRep的插件,Galera是WSRep提供者,實(shí)現(xiàn)了同步多主節(jié)點(diǎn)數(shù)據(jù)復(fù)制功能,Galera replication特性具有同步復(fù)制主備無延遲、支持多主同時讀寫,保證數(shù)據(jù)一致性、集群中各節(jié)點(diǎn)保存全量數(shù)據(jù)、節(jié)點(diǎn)添加或刪除,自動檢測和配置、行級別并行復(fù)制、不需要寫binlog。
2.2 Galera的實(shí)現(xiàn)架構(gòu)
Galera的實(shí)現(xiàn)架構(gòu),如圖1所示。
2.3 安裝前的準(zhǔn)備
(1)需要至少三臺虛擬服務(wù)器,建議安裝Centos 6,數(shù)據(jù)庫為MySQL 5.5版本,為服務(wù)器分配好IP地址。
(2)準(zhǔn)備好MySQL with WSRep、Galera等軟件安裝包。
(3)關(guān)閉系統(tǒng)防火墻Selinux和Iptables。
2.4 安裝部署
(1)第一個節(jié)點(diǎn)的安裝及配置,首先關(guān)閉系統(tǒng)防火墻,設(shè)置MySQL的yum源并安裝依賴包。
(2)安裝數(shù)據(jù)及服務(wù)組件,建立Cluster使用者,設(shè)置遠(yuǎn)程登錄,修改主節(jié)點(diǎn)的配置文件,啟動集群服務(wù),確認(rèn)MySQL 3306端口和WSRep的4567端口處于監(jiān)聽狀態(tài)。
(3)第二個節(jié)點(diǎn)安裝及配置其他節(jié)點(diǎn),方法與安裝第一個節(jié)點(diǎn)類似,在修改從節(jié)點(diǎn)配置文件時,需要將WSRep_cluster_address的地址指向主節(jié)點(diǎn)。
(4)檢查各節(jié)點(diǎn)運(yùn)行狀態(tài),使用數(shù)據(jù)庫管理工具測試數(shù)據(jù)庫集群功能。
2.5 使用前的注意事項(xiàng)
(1)使用Galera必須要給MySQL-Server打WSRep補(bǔ)丁??梢灾苯邮褂霉俜教峁┑囊呀?jīng)打好補(bǔ)丁的MySQL安裝包,如果服務(wù)器上已經(jīng)安裝了標(biāo)準(zhǔn)版MySQL,需要先卸載再重新安裝。卸載前注意備份數(shù)據(jù)。
(2)MySQL/Galera集群只支持InnoDB存儲引擎。如果數(shù)據(jù)表使用的是MyISAM,需要轉(zhuǎn)換為InnoDB,否則記錄不會在多臺復(fù)制。可以在備份老數(shù)據(jù)時,為MySQLdump命令添加skip-create-options參數(shù),這樣會去掉表結(jié)構(gòu)的聲明信息,再導(dǎo)入集群時自動使用InnoDB引擎。不過這樣會將AUTO_INCREMENT一并去掉,已有AUTO_INCREMENT列的表,必須在導(dǎo)入后重新定義。
(3)MySQL 5.5及以下的InnoDB引擎不支持全文索引(FULLTEXT indexes),如果之前使用了MyISAM并建立了全文索引字段,只能安裝MySQL 5.6 with WSRep patch。
(4)所有數(shù)據(jù)表必須要有主鍵(PRIMARY),如果沒有主鍵可以建一條AUTO_INCREMENT列。
(5)MySQL/Galera集群不支持下面的查詢:LOCK/UNLOCK TABLES,不支持下面的系統(tǒng)變量:character_set_server、utf16、utf32及ucs2。
(6)數(shù)據(jù)庫日志不支持保存到表,只能輸出到文件(log_output = FILE),不能設(shè)置binlog-do-db、binlog-ignore-db。
(7)跟其他集群一樣,為了避免節(jié)點(diǎn)出現(xiàn)腦裂而破壞數(shù)據(jù),建議Galera集群最低添加3個節(jié)點(diǎn)。
(8)在高并發(fā)的情況下,多主同時寫入時可能會發(fā)生事務(wù)沖突,此時只有一個事務(wù)請求會成功,其他的全部失敗??梢栽趯懭牖蚋率r,自動重試一次,再返回結(jié)果。
(9)節(jié)點(diǎn)中每個節(jié)點(diǎn)的地位是平等的,沒有主次,向任何一個節(jié)點(diǎn)讀寫效果都是一樣的。實(shí)際可以配合VIP/LVS或HA使用,實(shí)現(xiàn)高可用性。
(10)如果集群中的機(jī)器全部重啟,如機(jī)房斷電,第一臺啟動的服務(wù)器必須以空地址啟動。
主要參考文獻(xiàn)
[1]王春海.深入學(xué)習(xí)VMware vSphere 6[M].北京:人民郵電出版社,2016.
[2]張工廠.MySQL技術(shù)精粹——架構(gòu)、高級特性、性能優(yōu)化與集群實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2015.