基于Galera的MySQL/MariaDB數(shù)據(jù)庫(kù)參考架構(gòu)在VPS主機(jī)上的部署與實(shí)踐
1. 引言
在當(dāng)今數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用中,數(shù)據(jù)庫(kù)的高可用性和可擴(kuò)展性成為關(guān)鍵需求。Galera Cluster 是一種同步多主復(fù)制解決方案,廣泛用于 MySQL 和 MariaDB,能夠在多個(gè)節(jié)點(diǎn)間實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)同步,提供高可用性和讀寫(xiě)擴(kuò)展能力。對(duì)于資源有限但追求高可用的場(chǎng)景,在 VPS(虛擬專用服務(wù)器)主機(jī)上部署 Galera 集群是一種經(jīng)濟(jì)高效的方案。本文將介紹基于 VPS 的 Galera 數(shù)據(jù)庫(kù)參考架構(gòu),涵蓋架構(gòu)設(shè)計(jì)、部署要點(diǎn)、運(yùn)維考量及最佳實(shí)踐。
2. Galera Cluster 核心特性
- 同步復(fù)制:事務(wù)在所有節(jié)點(diǎn)提交前需獲得全集群認(rèn)證,確保數(shù)據(jù)強(qiáng)一致性。
- 多主寫(xiě)入:任意節(jié)點(diǎn)均可執(zhí)行讀寫(xiě)操作,無(wú)需應(yīng)用層路由區(qū)分。
- 自動(dòng)節(jié)點(diǎn)加入:新節(jié)點(diǎn)自動(dòng)從現(xiàn)有節(jié)點(diǎn)同步數(shù)據(jù)(SST/IST)。
- 故障轉(zhuǎn)移:節(jié)點(diǎn)故障不影響集群整體可用性,客戶端可通過(guò)負(fù)載均衡或連接池切換。
- For MySQL: 常與 Percona XtraDB Cluster 或 MariaDB Galera Cluster 搭配;對(duì)于 MariaDB,Galera 是原生集成組件。
3. VPS 環(huán)境下的參考架構(gòu)
3.1 集群拓?fù)?/h3>
推薦至少三個(gè)節(jié)點(diǎn)組成 Galera 集群,以滿足法定人數(shù)(Quorum)要求,避免腦裂。每個(gè)節(jié)點(diǎn)部署在獨(dú)立的 VPS 上,分布于不同的物理主機(jī)或可用區(qū)(若供應(yīng)商支持)。典型拓?fù)淙缦拢?/p>
- 節(jié)點(diǎn)1:VPS-1(主數(shù)據(jù)中心A)
- 節(jié)點(diǎn)2:VPS-2(主數(shù)據(jù)中心B)
- 節(jié)點(diǎn)3:VPS-3(主數(shù)據(jù)中心C)
- 可選仲裁節(jié)點(diǎn):在輕量 VPS 上運(yùn)行 Galera Arbitrator(garbd),用于防止腦裂而不參與數(shù)據(jù)復(fù)制。
若僅有兩個(gè)數(shù)據(jù)節(jié)點(diǎn),可增加一個(gè)仲裁節(jié)點(diǎn),構(gòu)成“2+1”模式,降低成本同時(shí)保證投票多數(shù)。
3.2 網(wǎng)絡(luò)要求
Galera 節(jié)點(diǎn)間需低延遲、穩(wěn)定連接。VPS 通常提供內(nèi)網(wǎng)或公網(wǎng) IP,建議:
- 使用內(nèi)網(wǎng)通信(若供應(yīng)商支持),降低延遲和流量成本。
- 若必須走公網(wǎng),啟用 TLS 加密復(fù)制流量,并配置防火墻僅允許節(jié)點(diǎn)間特定端口(3306, 4567, 4568, 4444)通信。
3.3 資源規(guī)劃
VPS 資源配置需根據(jù)數(shù)據(jù)量和負(fù)載確定:
- CPU:至少 2 核,建議 4 核以上應(yīng)對(duì)并發(fā)復(fù)制。
- 內(nèi)存:根據(jù)數(shù)據(jù)集大小,建議不少于 4GB,確保 InnoDB 緩沖池充足。
- 存儲(chǔ):使用 SSD 存儲(chǔ),提高 I/O 性能;考慮磁盤空間需預(yù)留 2 倍數(shù)據(jù)量以支持 SST。
- 帶寬:內(nèi)部復(fù)制流量可能較大,確保 VPS 有足夠帶寬和流量包。
3.4 組件選擇
- 數(shù)據(jù)庫(kù)版本:MariaDB 10.6+ 或 MySQL 8.0(搭配 Percona XtraDB Cluster 8.0)。
- Galera 版本:MariaDB 自帶 Galera 4;MySQL 需單獨(dú)安裝 Percona Galera。
- 負(fù)載均衡器:可選 HAProxy、ProxySQL 或 MaxScale,實(shí)現(xiàn)客戶端請(qǐng)求分發(fā)和故障轉(zhuǎn)移。
- 監(jiān)控:Prometheus + Grafana,或 Percona Monitoring and Management (PMM)。
Backup:XtraBackup 或 Mariabackup 進(jìn)行物理備份。
4. 部署步驟概覽(以 MariaDB Galera 為例)
- 準(zhǔn)備 VPS:更新系統(tǒng),設(shè)置主機(jī)名和 hosts,配置時(shí)間同步(NTP)。
- 安裝 MariaDB 與 Galera:在各節(jié)點(diǎn)安裝 MariaDB Server 和 Galera 提供商。
- 配置 Galera:編輯/etc/mysql/conf.d/galera.cnf,設(shè)置 wsrepclusteraddress、wsrepnodeaddress、wsrepnodename 等關(guān)鍵參數(shù)。
- 初始化首個(gè)節(jié)點(diǎn):在第一個(gè)節(jié)點(diǎn)執(zhí)行 mysqldsafe --wsrep-new-cluster 或 galeranew_cluster 啟動(dòng)新集群。
- 加入其余節(jié)點(diǎn):正常啟動(dòng) MariaDB 服務(wù),節(jié)點(diǎn)自動(dòng)檢測(cè)并加入集群。
- 驗(yàn)證集群:查詢 wsrepclustersize 和 wsreplocalstate_comment 確認(rèn)狀態(tài)。
- 配置負(fù)載均衡:使用 HAProxy 等分發(fā)應(yīng)用請(qǐng)求至各節(jié)點(diǎn)。
5. 運(yùn)維與最佳實(shí)踐
5.1 監(jiān)控與告警
- 監(jiān)控 Galera 關(guān)鍵指標(biāo):
wsrep<em>cluster</em>size、wsrep<em>cluster</em>status、wsrep<em>local</em>recv<em>queue、wsrep</em>flow<em>control</em>paused等。 - 設(shè)置閾值告警,及時(shí)發(fā)現(xiàn)復(fù)制延遲或節(jié)點(diǎn)掉線。
5.2 備份策略
- 定期執(zhí)行邏輯備份(mysqldump)和物理備份(mariabackup/XtraBackup)。
- 建議從單個(gè)節(jié)點(diǎn)備份,避免影響全局性能。
- 測(cè)試恢復(fù)流程,確保備份有效性。
5.3 擴(kuò)容與縮容
- 擴(kuò)容:新增 VPS,安裝相同配置,加入集群即自動(dòng)同步。
- 縮容:停止節(jié)點(diǎn)服務(wù),從集群中移除,然后銷毀 VPS(注意先確認(rèn)已從 wsrep 中剔除)。
5.4 腦裂預(yù)防
- 確保奇數(shù)個(gè)投票節(jié)點(diǎn),或使用 Galera Arbitrator。
- 設(shè)置合適的
pc.weight或仲裁策略。 - 監(jiān)控網(wǎng)絡(luò)分區(qū),一旦發(fā)生腦裂,需人工干預(yù)并選擇最新數(shù)據(jù)節(jié)點(diǎn)重啟集群。
5.5 性能調(diào)優(yōu)
- 優(yōu)化 InnoDB:調(diào)整
innodb<em>buffer</em>pool<em>size、innodb</em>flush<em>log</em>at<em>trx</em>commit=2以提高吞吐。 - 調(diào)整 wsrep 參數(shù):
wsrep<em>slave</em>threads、wsrep<em>provider</em>options中添加 GPU 或優(yōu)化 gcache。 - 使用 CPU 親和性減少上下文切換(若可用)。
5.6 安全性
- 啟用 mysql 審計(jì)插件(如有)。
- 節(jié)點(diǎn)間啟用 SSL 加密。
- 配置防火墻,限制公網(wǎng)訪問(wèn)。
6. 典型挑戰(zhàn)與應(yīng)對(duì)
- 不穩(wěn)定網(wǎng)絡(luò):VPS 公網(wǎng)時(shí)延波動(dòng)可能引起節(jié)點(diǎn)驅(qū)逐。考慮使用內(nèi)網(wǎng),或調(diào)整
evs.suspect_timeout等參數(shù)增強(qiáng)容忍度。 - I/O 限制:部分低價(jià) VPS 的磁盤 IO 有瓶頸,可能導(dǎo)致流控。選擇 SSD 并限制寫(xiě)入速率。
- 內(nèi)存溢出:仔細(xì)計(jì)算數(shù)據(jù)集大小,避免內(nèi)存不足引起 SST 和節(jié)點(diǎn)崩潰。
- 成本考慮:三臺(tái)稍微配置高的 VPS 成本可能低于專門托管。建議根據(jù)寫(xiě)擴(kuò)展需求平衡節(jié)點(diǎn)數(shù)量。
7.
在 VPS 主機(jī)上部署 Galera 數(shù)據(jù)庫(kù)集群是實(shí)現(xiàn) MySQL/MariaDB 高可用和高可擴(kuò)展的有效途徑。通過(guò)合理規(guī)劃節(jié)點(diǎn)配置、細(xì)致的調(diào)優(yōu)和持續(xù)的運(yùn)維,即使在云抽象層之下也能構(gòu)建出穩(wěn)定的數(shù)據(jù)庫(kù)基座。本文提供的參考架構(gòu)和部署框架可依據(jù)具體環(huán)境調(diào)整,以滿足生產(chǎn)和測(cè)試需求。讀者應(yīng)結(jié)合實(shí)際 VPS 供應(yīng)商特性和業(yè)務(wù)負(fù)載,進(jìn)行細(xì)致的容量規(guī)劃和性能驗(yàn)證,方能充分發(fā)揮 Galera 的潛力。
如若轉(zhuǎn)載,請(qǐng)注明出處:http://www.njfh.com.cn/product/51.html
更新時(shí)間:2026-10-11 05:40:33