本文只是介紹安裝和配置,關於一些名詞和原理,請參考MySQL手冊。
一.環境:
IBM x3560
Vmware esx 4.0
centos 5.3 –32bit
MySQL-max-5.0.24-linux-i686.tar.gz
為了快速搭建所需環境,我選擇了一台IBM服務器安裝了Vmware esx 4.0,用vm的ovf模板部署了3台centos,一台作為管理MGM),節點兩台作為SQL節點和數據節點。計算機名和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是二進制的包,所以也省去了安裝的麻煩,只需要幾步簡單的設置。
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/下,初始化數據庫,設置目錄權限,啟動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寫入服務,初始化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服務,修改配置文件
- [root@db1 MySQL]# service MySQLd stop
- [root@db1 MySQL]# vi /etc/my.cnf
在最下面添加內容:
- [MySQLD]
- ndbcluster
- ndb-connectstring=192.168.20.203
- [MySQL_CLUSTER]
- ndb-connectstring=192.168.20.203
保存退出,先不要啟動MySQL服務
三,部署管理節點
管理節點的配置也很簡單,但它是MySQL cluster配置中最關鍵的一步。
1, 解壓MySQL-max-5.0.24-linux-i686.tar.gz包,拷貝包裡bin目錄下的ndb_mgm和ndb_mgmd兩文件到/usr/bin/目錄中看一下是否具有可執行權限)。
- [root@mgm MySQL-max-5.0.24-linux-i686]# cd bin/ndb_mgm* /usr/bin
2, 創建管理節點數據庫目錄,並且在此目錄中建立配置文件config.ini
- Mkdir /usr/local/MySQL-cluster
- Cd /usr/local/MySQL-cluster
- Vi config.ini
添加如下內容:
- [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的啟動順序:管理節點--數據節點-SQL節點。
1,[root@mgm MySQL-cluster]# ndb_mgmd -f ./config.ini
如果沒有提示,表示啟動成功,Ps -aux查看進程,看是否已經啟動
- root 4700 0.0 0.6 5984 1668 ? Ssl 14:20 0:00 ndb_mgmd -f ./config.ini
2,分別在DB1和DB2上啟動數據節點
- [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
在網上找答案,出這個問題的人還真不少,而且答案五花八門,統統試了一遍,還是不行,問題到底出在哪裡呢?
查看錯誤日志,內容如下:
- [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***
看帶下劃線處,不能連接到管理節點,我的管理節點啟動是ok的啊,突然一下明白了,防火牆是開著的系統默認是開啟的),關掉防火牆和SELinux,重新ndbd –initial,啟動成功
3, 啟動SQL節點上的MySQL服務
- Service MySQLd start
4,全部節點都啟動成功後,在MGM節點上用ndb_mgm工具的show命令查看群集的狀態
- [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)
看藍色標示的字段,可以看到管理節點,sql節點和數據節點,還有一個連接端口。
五.MySQL cluster的測試
聲明一點,要使用MySQL cluster,表的存儲引擎必須是ndb的。
在DB1192.168.20.201)中創建表,插入數據:
- 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
然後再DB2192.168.20.202)上看到了剛才創建的表和表裡的數據
- 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上創建一個數據庫是不能同步到db2上去的,兩邊需要有相同名字的庫名,庫中的數據才能同步過去
編輯推薦】