首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Heartbeat 2.0.3 打造 MySQL 5.0.18 高可用雙節點叢集

     編輯:MySQL 資料庫相關知識

架構規劃

角色主機名eth0 (心跳)eth1 (服務)
PrimaryMySQL5192.168.0.5010.4.66.35
SecondaryMySQL6192.168.0.6010.4.66.36
ManagementMySQL3192.168.0.3-

虛擬服務 IP:10.4.66.88/24 (eth1),共享儲存:NAS 10.4.66.251:/data 掛載至本地 /data。

MySQL 叢集節點安裝(兩台相同)

# 移除系統自帶 MySQL
rpm -e mysql-server
userdel mysql
mv /etc/my.cnf /etc/my.cnf.bak

# 安裝 MySQL-Max 5.0.18
useradd mysql
tar xzf mysql-max-5.0.18-linux-i686-glibc23.tar.gz
mv mysql-max-5.0.18-linux-i686-glibc23 /usr/local/mysql
cd /usr/local/mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .

my.cnf 關鍵配置

[mysqld]
datadir=/data/mysqldata
innodb_data_home_dir=/usr/local/mysql/data
innodb_log_group_home_dir=/usr/local/mysql/data
innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend
ndbcluster
ndb-connectstring=192.168.0.3

[mysql_cluster]
ndb-connectstring=192.168.0.3

修改啟動腳本 PID 路徑指向本地目錄:

pid_file=/usr/local/mysql/data/mysqlmanager-`hostname`.pid
server_pid_file=/usr/local/mysql/data/`hostname`.pid

初始化與啟動

Primary 節點:

mount 10.4.66.251:/data /data
mkdir /data/mysqldata
./scripts/mysql_install_db --user=mysql
chown -R mysql.mysql /data/mysqldata/
/etc/rc.d/init.d/mysql.server start

Secondary 節點:相同步驟但不執行 mysql_install_db(共享儲存已有資料)。

管理節點配置

mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
cat > config.ini <<'EOF'
[NDBD DEFAULT]
NoOfReplicas=2

[NDB_MGMD]
HostName=192.168.0.3

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

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

[MYSQLD]
[MYSQLD]
EOF

ndb_mgmd  # 啟動管理服務

啟動 NDB 儲存引擎

兩個叢集節點均執行:

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

驗證叢集狀態

ndb_mgm
ndb_mgm> show
# 應顯示 2 個 ndbd 節點、1 個管理節點、2 個 SQL 節點皆連線正常

故障測試與恢復

  • 拔除 Primary 網線,觀察 Secondary 接管服務 IP 並繼續提供查詢
  • 或 kill -9 $(pidof ndbd) 模擬節點故障
  • 恢復:重啟 ndbd(不加 --initial)

關鍵注意事項

  • 共享儲存掛載與 MySQL 服務不可設為開機自啟,由 Heartbeat 統管
  • 同時只能有一個節點運行 MySQL 服務,避免雙寫腦裂
  • 管理節點建議保持運行,雖理論上叢集啟動後可關閉
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved