[教學][研究] 4主機 MySQL Cluster 架設
2010/02/25
Lu
參考文件 (MySQL 5.1 + MySQL Cluster NDB 6.X/7.X)
http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster.html[教學][研究] 4主機 MySQL Cluster 架設
http://forum.icst.org.tw/phpbb/viewtopic.php?f=10&t=17903[教學][研究] 雙主機 MySQL Cluster 架設
http://forum.icst.org.tw/phpbb/viewtopic.php?f=10&t=17904一、概念說明
MySQL Cluster(叢集,大陸稱為 "集群" 或 "群集") 架構大致如下

NDB 是 Network DataBase (網路資料庫)
MySQL Cluster中主機分三類
1. 管理主機 : 服務程式(Deamon) 稱為 ndb_mgmd (NDB Management Daemon的意思)
管理工具稱為 ndb_mgm (NDB Management 的意思),預設使用 Port 1186。
2. Data Node: 實際存放資料的主機 (Storage),服務程式稱為 ndbd (NDB Daemon的意思)。
3. SQL Node : 提供存取資料庫內容,服務程式稱為 mysqld (MySQL Deamon的意思)。
---------------------------------------------------------------------------
一、環境
Windows XP x86 + VMware Workstation 7.01 架設兩台 VM,都安裝 CentOS 5.4 x86
centos1 eth0:192.168.128.101 (MGM Node)
centos2 eth0:192.168.128.102 (SQL Node)
centos2 eth0:192.168.128.103 (Data Node)
centos2 eth0:192.168.128.104 (Data Node)
Windows XP x86 只能控制到 3.x GB RAM
VMware Workstation 7.01 預設 RHEL5 (VM) 使用 1GB RAM,4台會吃掉 4GB,根本不夠,所以小弟降低到 512 MB 使用。
---------------------------------------------------------------------------
二、安裝
為了省麻煩,防火牆先關閉。
請把 SELinux 也關閉 (變更 SELinux 需要 reboot 才能生效)CentOS 用 yum 安裝的 MySQL 是不能架設 Cluster 的,必須移除,
然後去 MySQL 官方網站註冊和下載 MySQL Cluster 使用的套件
(rpm 安裝和 tar.gz 安裝的很多路徑不同,如果使用非 rpm 請自己另外研究)
MySQL-Cluster-gpl-client-7.0.9-0.rhel5.i386.rpm
MySQL-Cluster-gpl-debuginfo-7.0.9-0.rhel5.i386.rpm
MySQL-Cluster-gpl-devel-7.0.9-0.rhel5.i386.rpm
MySQL-Cluster-gpl-embedded-7.0.9-0.rhel5.i386.rpm
MySQL-Cluster-gpl-extra-7.0.9-0.rhel5.i386.rpm
MySQL-Cluster-gpl-management-7.0.9-0.rhel5.i386.rpm
MySQL-Cluster-gpl-server-7.0.9-0.rhel5.i386.rpm
MySQL-Cluster-gpl-shared-7.0.9-0.rhel5.i386.rpm
MySQL-Cluster-gpl-storage-7.0.9-0.rhel5.i386.rpm
MySQL-Cluster-gpl-test-7.0.9-0.rhel5.i386.rpm
MySQL-Cluster-gpl-tools-7.0.9-0.rhel5.i386.rpm
如果不想安裝全部,各Node基本需要的套件如下
SQL Node
rpm -Uhv MySQL-Cluster-gpl-server-7.0.9-0.rhel5.i386.rpm
rpm -Uhv MySQL-Cluster-gpl-client-7.0.9-0.rhel5.i386.rpm
Data Node
rpm -Uhv MySQL-Cluster-gpl-storage-7.0.9-0.rhel5.i386.rpm
MGM Node
rpm -Uhv MySQL-Cluster-gpl-management-7.0.9-0.rhel5.i386.rpm
rpm -Uhv MySQL-Cluster-gpl-tools-7.0.9-0.rhel5.i386
小弟是在 Windows XP 上下載後,做成 .iso 檔案,掛載到 VMware 光碟機,
然後用 mount 掛載到 Linux 上的 /media 目錄使用
命令如下 (4台都要做)
代碼:
service iptables stop
yum -y remove mysql*
mount /dev/cdrom /media
cd /media
rpm -ivh *.rpm
---------------------------------------------------------------------------
三、設定
(1) 設定 MGM 設定檔 config.ini
這裡有 config.ini 的基本範例
http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-config-example.htmlMGM 機器請執行下面命令
代碼:
mkdir -p /var/lib/mysql-cluster
vi /var/lib/mysql-cluster/config.ini
內容如下
代碼:
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[tcp default]
portnumber=2202
[ndb_mgmd]
hostname=192.168.128.101
datadir=/var/lib/mysql-cluster
[ndbd]
hostname=192.168.128.104
datadir=/var/lib/mysql-cluster
[ndbd]
hostname=192.168.128.103
datadir=/var/lib/mysql-cluster
[mysqld]
hostname=192.168.128.102
(2) 設定 my.cnf
這裡有 my.cnf 的基本範例
http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-config-example.html代碼:
vi /etc/my.cnf
內容如下
代碼:
[mysqld]
ndbcluster # run NDB storage engine
ndb-connectstring=192.168.128.101
[mysql_cluster]
ndb-connectstring=192.168.128.101
---------------------------------------------------------------------------
四、啟動
啟動 MySQL Cluster 順序: 首先啟動管理節點服務器(ndb_mgmd),然後啟動存儲節點服務器(ndbd),最後才啟動SQL節點服務器(service mysql start)
停止 MySQL Cluster : 執行 ndb_mgm -e showdown,它會把所有 MGM Node 和所有 Data Node 的 ndb_mgmd 和 ndbd 都停止掉。(mysqld 還留著)
在 SQL Node 上停止 mysqld 服務命令為 (其實 ndb_mgm -e showdown 就足夠讓 Cluster 幾乎停工)
[root@centos1 ~]# mysqladmin –u root shutdown
(1) MGM 主機上
代碼:
[root@mgm ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
2010-02-22 10:41:49 [MgmtSrvr] INFO -- NDB Cluster Management Server. mysql-5.1.39 ndb-7.0.9b
2010-02-22 10:41:49 [MgmtSrvr] INFO -- Reading cluster configuration from '/var/lib/mysql-cluster/config.ini'
(2) 啟動 Data Node (兩台都要做)
代碼:
[root@data1 ~]# mkdir -p /usr/local/mysql/data/
[root@data1 ~]# ndbd
2010-02-08 17:42:34 [ndbd] INFO -- Configuration fetched from '192.168.128.101:1186', generation: 1
(3) 啟動 SQL Node
代碼:
[root@sql ~]# service mysql start
Starting MySQL.... [ OK ]
(4) 檢查目前狀況
到 MGM 主機上檢查目前狀況
代碼:
[root@mgm ~]# ndb_mgm -e show
Connected to Management Server at: 192.168.128.101:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.128.104 (mysql-5.1.39 ndb-7.0.9, Nodegroup: 0, Master)
id=3 @192.168.128.103 (mysql-5.1.39 ndb-7.0.9, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.128.101 (mysql-5.1.39 ndb-7.0.9)
[mysqld(API)] 1 node(s)
id=4 @192.168.128.102 (mysql-5.1.39 ndb-7.0.9)
(完)