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

MySQL 叢集配置完整指南:雙節點高可用架構實戰

     編輯:MySQL 綜合教學

前言:為什麼需要第三台管理節點?

本文詳細介紹如何在兩台服務器上部署 MySQL 叢集,並實現任意單節點故障時服務不中斷。雖然核心數據節點僅需兩台,但架構強制要求第三台獨立的管理節點。管理節點負責叢集配置分發、仲裁決策,啟動後理論上可關閉,但生產環境強烈建議保持運行——若僅兩台數據節點且無管理節點,任一宕機將導致整個叢集不可用,失去高可用意義。

實驗環境採用三台虛擬機:

  • Server1:mysql1.vmtest.net (192.168.0.1) — 數據節點
  • Server2:mysql2.vmtest.net (192.168.0.2) — 數據節點
  • Server3:mysql3.vmtest.net (192.168.0.3) — 管理節點(配置要求低,無需安裝 MySQL)

一、數據節點安裝 MySQL Max 版

Server1 和 Server2 均需執行以下步驟(必須使用 mysql-max 版本,Standard 版不支援叢集):

# mv mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz /usr/local/
# cd /usr/local/
# groupadd mysql
# useradd -g mysql mysql
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm -f mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# mv mysql-max-4.1.9-pc-linux-gnu-i686 mysql
# cd mysql
# scripts/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .
# cp support-files/my-medium.cnf /etc/my.cnf
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld

注意:此時切勿啟動 MySQL!

二、管理節點部署與配置

Server3 僅需提取 ndb_mgm 和 ndb_mgmd 兩個二進制文件:

# mkdir /usr/src/mysql-mgm && cd /usr/src/mysql-mgm
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# cd mysql-max-4.1.9-pc-linux-gnu-i686
# mv bin/ndb_mgm bin/ndb_mgmd .
# chmod +x ndb_mg*
# mv ndb_mg* /usr/bin/
# cd && rm -rf /usr/src/mysql-mgm

建立配置目錄並編寫 config.ini:

# mkdir -p /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini

配置文件核心內容:

[NDBD DEFAULT]
NoOfReplicas=2

[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]

# Management Server
[NDB_MGMD]
HostName=192.168.0.3

# Storage Engines (Data Nodes)
[NDBD]
HostName=192.168.0.1
DataDir=/var/lib/mysql-cluster

[NDBD]
HostName=192.168.0.2
DataDir=/var/lib/mysql-cluster

# SQL Nodes (留空便於後續擴容/替換節點)
[MYSQLD]
[MYSQLD]

啟動管理服務:ndb_mgmd(無輸出屬正常)。

三、數據節點配置與啟動

在 Server1、Server2 修改 /etc/my.cnf:

[mysqld]
ndbcluster
ndb-connectstring=192.168.0.3

[mysql_cluster]
ndb-connectstring=192.168.0.3

建立數據目錄並初始化啟動:

# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# /usr/local/mysql/bin/ndbd --initial   # 僅首次或配置變更時使用 --initial
# /etc/rc.d/init.d/mysqld start

將 /usr/local/mysql/bin/ndbd 加入 /etc/rc.local 實現開機自啟。

四、驗證叢集狀態

在 Server3 執行 /usr/bin/ndb_mgm 進入管理終端,輸入 show:

ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
-------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.1 (Version: 4.1.9, Nodegroup: 0, Master)
id=3 @192.168.0.2 (Version: 4.1.9, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.3 (Version: 4.1.9)

[mysqld(API)] 2 node(s)
id=4 (Version: 4.1.9)
id=5 (Version: 4.1.9)

五、功能測試與破壞性測試

在 Server1 建表測試:

mysql> USE test;
mysql> CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
mysql> INSERT INTO ctest () VALUES (1);
mysql> SELECT * FROM ctest;

切換到 Server2 驗證數據同步,雙向寫入測試無誤即部署成功。

破壞性測試:拔除任一數據節點網線,或殺掉 ndbd 進程(kill -9 ),觀察另一節點查詢是否正常。恢復時僅需重啟 ndbd(無需 --initial)。

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