MySQL集群在IBM服務(wù)器上配置安裝詳解
本文只是介紹安裝和配置,關(guān)于一些名詞和原理,請參考MySQL手冊。
一.環(huán)境:
IBM x3560
Vmware esx 4.0
centos 5.3 –32bit
MySQL-max-5.0.24-linux-i686.tar.gz
為了快速搭建所需環(huán)境,我選擇了一臺IBM服務(wù)器安裝了Vmware esx 4.0,用vm的ovf模板部署了3臺centos,一臺作為管理(MGM),節(jié)點兩臺作為SQL節(jié)點和數(shù)據(jù)節(jié)點。計算機名和IP地址如下:
DB1 192.168.20.201
DB2 192.168.20.202
MGM 192.168.20.203
二,在DB1和DB2上部署MySQL(配置過程相同)
聽說MySQL5.1以及集成了MySQL集群功能,但是看了好多資料(包括MySQL5.1手冊),都沒有介紹安裝配置的方法,很郁悶,***還是選擇了MySQL-max-5.0.24這個版本,MySQL-max是二進制的包,所以也省去了安裝的麻煩,只需要幾步簡單的設(shè)置。
1, 建立MySQL用戶組,MySQL-max-5.0.24-linux-i686.tar.gz解壓后移動到/usr/local/MySQL
- [root@db1 software]#groupadd MySQL
 - [root@db1 software]#useradd –g MySQL MySQL
 - [root@db1 software]# tar -zxf MySQL-max-5.0.24-linux-i686.tar.gz
 - [root@db1 software]#mv MySQL-max-5.0.24-linux-i686 MySQL
 - [root@db1 software]#mv MySQL /usr/local/MySQL
 
2, 拷貝MySQL配置文件到/etc/下,初始化數(shù)據(jù)庫,設(shè)置目錄權(quán)限,啟動MySQL
- [root@db1 software]# cd /usr/local/MySQL/
 - [root@db1 MySQL]# cp support-files/my-medium.cnf /etc/my.cnf
 - [root@db1 MySQL]# scripts/MySQL_install_db --user=MySQL
 - [root@db1 MySQL]#chown -R root .
 - [root@db1 MySQL]#chown -R MySQL data
 - [root@db1 MySQL]#chgrp -R MySQL .
 - [root@db1 MySQL]# bin/MySQLd_safe --user=MySQL &
 
3, 將MySQL寫入服務(wù),初始化MySQL的root密碼
- [root@db1 MySQL]# cp support-files/MySQL.server /etc/rc.d/init.d/MySQLd
 - [root@db1 MySQL]# chkconfig --add MySQLd
 - [root@db1 MySQL]# bin/MySQLadmin -u root password 123456
 
4, 停止MySQL服務(wù),修改配置文件
- [root@db1 MySQL]# service MySQLd stop
 - [root@db1 MySQL]# vi /etc/my.cnf
 
在最下面添加內(nèi)容:
- [MySQLD]
 - ndbcluster
 - ndb-connectstring=192.168.20.203
 - [MySQL_CLUSTER]
 - ndb-connectstring=192.168.20.203
 
保存退出,先不要啟動MySQL服務(wù)
三,部署管理節(jié)點
管理節(jié)點的配置也很簡單,但它是MySQL cluster配置中最關(guān)鍵的一步。
1, 解壓MySQL-max-5.0.24-linux-i686.tar.gz包,拷貝包里bin目錄下的ndb_mgm和ndb_mgmd兩文件到/usr/bin/目錄中(看一下是否具有可執(zhí)行權(quán)限)。
- [root@mgm MySQL-max-5.0.24-linux-i686]# cd bin/ndb_mgm* /usr/bin
 
2, 創(chuàng)建管理節(jié)點數(shù)據(jù)庫目錄,并且在此目錄中建立配置文件config.ini
- Mkdir /usr/local/MySQL-cluster
 - Cd /usr/local/MySQL-cluster
 - Vi config.ini
 
添加如下內(nèi)容:
- [NDBD DEFAULT]
 - NoOfReplicas=2
 - DataMemory=200M
 - IndexMemory=100M
 - [TCP DEFAULT]
 - portnumber=2202
 - [NDB_MGMD]
 - hostname=192.168.20.203
 - datadir=/usr/local/MySQL-cluster
 - [NDBD]
 - hostname=192.168.20.201
 - datadir=/usr/local/MySQL/data
 - [NDBD]
 - hostname=192.168.20.202
 - datadir=/usr/local/MySQL/data
 - [MySQLD]
 - hostname=192.168.20.201
 - [MySQLD]
 - hostname=192.168.20.202
 
保存退出
四,MySQL cluster的啟動
MySQL cluster的啟動順序:管理節(jié)點--數(shù)據(jù)節(jié)點-SQL節(jié)點。
1,[root@mgm MySQL-cluster]# ndb_mgmd -f ./config.ini
如果沒有提示,表示啟動成功,Ps -aux查看進程,看是否已經(jīng)啟動
- root 4700 0.0 0.6 5984 1668 ? Ssl 14:20 0:00 ndb_mgmd -f ./config.ini
 
2,分別在DB1和DB2上啟動數(shù)據(jù)節(jié)點
- [root@db1 MySQL]# bin/ndbd –initial
 
問題出來了:
提示:
- [root@db1 MySQL]# bin/ndbd --initial
 - Unable to connect with connect string: nodeid=0,192.168.20.203:1186
 - Retrying every 5 seconds. Attempts left: 12 11 10 9 8 7 6 5 4 3 2 1, failed.
 - error=2350
 - 2010-05-05 14:21:21 [ndbd] INFO -- Error handler restarting system
 - 2010-05-05 14:21:21 [ndbd] INFO -- Error handler shutdown completed - exiting
 - sphase=0
 - exit=-1
 
在網(wǎng)上找答案,出這個問題的人還真不少,而且答案五花八門,統(tǒng)統(tǒng)試了一遍,還是不行,問題到底出在哪里呢?
查看錯誤日志,內(nèi)容如下:
- [root@db1 MySQL]# more ndb_pid4968_error.log
 - Current byte-offset of file-pointer is: 568
 - Time: Wednesday 5 May 2010 - 14:17:25
 - Status: Permanent error, external action needed
 - Message: Invalid configuration received from Management Server (Configuration error)
 - Error: 2350
 - Error data: Could not connect to ndb_mgmd
 - Error object:
 - Program: bin/ndbd
 - Pid: 4968
 - Trace: <no tracefile>
 - Version: Version 5.0.24
 - ***EOM***
 
看帶下劃線處,不能連接到管理節(jié)點,我的管理節(jié)點啟動是ok的啊,突然一下明白了,防火墻是開著的(系統(tǒng)默認是開啟的),關(guān)掉防火墻和SELinux,重新ndbd –initial,啟動成功
3, 啟動SQL節(jié)點上的MySQL服務(wù)
- Service MySQLd start
 
4,全部節(jié)點都啟動成功后,在MGM節(jié)點上用ndb_mgm工具的show命令查看群集的狀態(tài)
- [root@mgm ~]# ndb_mgm
 - -- NDB Cluster -- Management Client --
 - ndb_mgm> show
 - Connected to Management Server at: localhost:1186
 - Cluster Configuration
 - ---------------------
 - [ndbd(NDB)] 2 node(s)
 - id=2 @192.168.20.201 (Version: 5.0.24, Nodegroup: 0, Master)
 - id=3 @192.168.20.202 (Version: 5.0.24, Nodegroup: 0)
 - [ndb_mgmd(MGM)] 1 node(s)
 - id=1 @192.168.20.203 (Version: 5.0.24)
 - [MySQLd(API)] 2 node(s)
 - id=4 @192.168.20.201 (Version: 5.0.24)
 - id=5 @192.168.20.202 (Version: 5.0.24)
 
看藍色標示的字段,可以看到管理節(jié)點,sql節(jié)點和數(shù)據(jù)節(jié)點,還有一個連接端口。
五.MySQL cluster的測試
聲明一點,要使用MySQL cluster,表的存儲引擎必須是ndb的。
在DB1(192.168.20.201)中創(chuàng)建表,插入數(shù)據(jù):
- MySQL> use test
 - Database changed
 - MySQL> create table mingxing(name char(3))engine=ndb;
 - Query OK, 0 rows affected (0.57 sec)
 - MySQL> insert into mingxing value('jay'),('cyl'),('ldh');
 - Query OK, 3 rows affected (0.04 sec)
 - Records: 3 Duplicates: 0 Warnings: 0
 
然后再DB2(192.168.20.202)上看到了剛才創(chuàng)建的表和表里的數(shù)據(jù)
- MySQL> use test
 - Database changed
 - MySQL> show tables;
 - +----------------+
 - | Tables_in_test |
 - +----------------+
 - | mingxing |
 - +----------------+
 - 1 row in set (0.01 sec)
 - MySQL> select * from mingxing;
 - +------+
 - | name |
 - +------+
 - | jay |
 - | cyl |
 - | ldh |
 - +------+
 - 3 rows in set (0.00 sec)
 
到此,MySQL的安裝和配置基本完成。
注意: 如果在db1上創(chuàng)建一個數(shù)據(jù)庫是不能同步到db2上去的,兩邊需要有相同名字的庫名,庫中的數(shù)據(jù)才能同步過去
【編輯推薦】















 
 
 
 
 
 
 