首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL Cluster 高可用集群搭建完整指南

     編輯:MySQL 綜合教學

MySQL Cluster 高可用集群搭建完整指南


1. 概述

MySQL Cluster 是專為分布式計算環境設計的高實用性、可擴展、高性能、高冗餘版本。其研發初衷是滿足嚴苛的應用需求,如數據庫運行可靠性達 99.999%。MySQL Cluster 採用無共享架構部署「內存中」數據庫集群,可使用廉價硬件,無特殊軟硬件要求,且每個組件擁有獨立內存和磁盤,消除了單點故障。

實際上,MySQL Cluster 將名為 NDB 的內存集群存儲引擎集成到標準 MySQL 服務器中。它由一組計算機組成,每台運行一個或多個進程,可能包括 MySQL 服務器、數據節點、管理服務器和專用數據訪問程序。MySQL Cluster 支持多種故障切換和負載均衡配置,在 Cluster 層面配置 NDB 存儲引擎最為簡單。下圖展示了 MySQL 集群的結構關係:

MySQL Cluster 架構圖

從結構上看,MySQL Cluster 由三類節點組成:

  • 管理節點:為集群其他節點提供配置、管理、仲裁功能,理論上一台服務器即可。
  • 數據節點:核心組件,存儲數據和日誌,提供數據管理服務。2 個以上節點可實現高可用,但節點增加會降低處理速度。
  • SQL 節點 (API):用於訪問集群數據,提供對外應用服務。增加 API 節點可提升並發訪問速度和吞吐量,可部署在 Web 應用服務器、專用服務器或與 DB 同機。

2. NDB 引擎特性

MySQL Cluster 使用專用的基於內存的 NDB 存儲引擎,優勢是速度快、無磁盤 I/O 瓶頸;劣勢是數據庫規模受總內存限制,需大內存(如 4G、8G 甚至 16G)。NDB 引擎是分布式的,可配置在多台服務器上實現可靠性和擴展性,理論上 2 個 NDB 存儲節點即可實現冗餘和解決單點故障。

2.1 缺陷

  • 基於內存,數據庫規模受集群總內存限制
  • 基於內存,斷電後可能數據丟失(需測試驗證)
  • 多節點通過網絡通訊同步,整體性能受網絡速度影響

2.2 優點

  • 節點可分布在不同地理位置,實現分布式數據庫方案
  • 擴展性優秀,增加節點即可擴展集群
  • 冗餘性強,多節點擁有完整數據,任意節點宕機不中斷服務
  • 高可用成本低,無需共享存儲設備和專用軟件,只需足夠內存

3. 集群搭建實戰

本文演示搭建一個最小化 MySQL Cluster 系統:1 個管理節點、2 個數據節點、2 個 SQL 節點,分別部署在 5 台虛擬機上。環境信息如下:

角色主機名IP 地址
管理節點mysql-mgm192.168.124.141
數據節點 1mysql-ndbd-1192.168.124.142
數據節點 2mysql-ndbd-2192.168.124.143
SQL 節點 1mysql-sql-1192.168.124.144
SQL 節點 2mysql-sql-2192.168.124.145

3.1 公共配置(所有節點)

  1. 安裝虛擬機:CentOS 6.4 x86_64,NAT 網絡,安裝 vmware-tools。
  2. 拷貝 MySQL Cluster:下載 mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz 至 /root/Downloads,解壓並移動至 /usr/local/mysql。
  3. 關閉安全策略:關閉 iptables(或開放 1186、3306 端口),修改 /etc/selinux/config 設 SELINUX=disabled,重啟系統。

3.2 配置管理節點 (192.168.124.141)

  1. 配置 config.ini:創建 /var/lib/mysql-cluster 目錄,編寫配置文件,定義節點 ID、主機名、數據目錄等。
  2. 安裝管理程序:複製 ndb_mgmd 和 ndb_mgm 至 /usr/local/bin 並賦予執行權限。

3.3 配置數據節點 (192.168.124.142、143)

  1. 添加 mysql 用戶組和用戶
  2. 配置 /etc/my.cnf,指定 basedir、datadir、socket、ndb-connectstring 等
  3. 創建系統數據庫:scripts/mysql_install_db --user=mysql ...
  4. 設置數據目錄權限
  5. 配置 MySQL 服務啟動腳本

3.4 配置 SQL 節點 (192.168.124.144、145)

步驟與數據節點類似,但 my.cnf 需添加 ndbcluster 參數並指定連接管理節點。

3.5 集群啟動順序

  1. 啟動管理節點:ndb_mgmd -f /var/lib/mysql-cluster/config.ini,可用 ndb_mgm 監控。
  2. 啟動數據節點:首次啟動加 --initial 參數(/usr/local/mysql/bin/ndbd --initial),後續啟動不加。
  3. 啟動 SQL 節點:/usr/local/mysql/bin/mysqld_safe --user=mysql &

3.6 集群測試

測試一:數據同步驗證 在 SQL 節點 1 創建數據庫、表(引擎指定 NDB)、插入數據,驗證 SQL 節點 2 是否同步。
測試二:故障恢復驗證 關閉一個數據節點,在另一節點寫入數據,重啟故障節點後驗證數據雙向同步。

3.7 關閉集群

  1. 管理節點執行:ndb_mgm -e shutdown
  2. SQL 節點執行:/etc/init.d/mysql.server stop

注意:再次啟動時,數據節點不再添加 --initial 參數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved