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