1、準備工做(linux環境的一些配置)
mysql
首先咱們在電腦安裝好5個linux系統的vm-ware虛擬機,我在這裏裝的統一是CentOS-6.4-x86_64。linux
而後劃分後五個節點的ip分佈狀況:web
數據庫管理節點 |
mysql-mgm | 192.168.1.113 |
數據節點1 | mysql-ndbd-1 | 192.168.1.114 |
數據節點2 | mysql-ndbd-2 | 192.168.1.115 |
sql節點1 | mysql-sql-1 | 192.168.1.116 |
sql節點2 | mysql-sql-2 | 192.168.1.117 |
因爲安裝後的linux系統全是純淨的系統,因此先去按照上邊更改好ip;sql
修改IP永久生效按如下方法shell
vi /etc/sysconfig/network-scripts/ifcfg-eth0(eth0,第一塊網卡,若是是第二塊則爲eth1)數據庫
按以下修改ip(管理節點虛擬機爲例)dom
DEVICE=eth0(若是是第二塊剛爲eth1)socket
BOOTPROTO=static測試
IPADDR=192.168.1.113(改爲要設置的IP)spa
NETMASK=255.255.255.0 (子網掩碼)
GATEWAY=192.168.1.1(網關)
ONBOO=yes
而後
service network restart
最後能夠用ifconfig -a命令查看下ip的狀況
五個linux系統都修改好ip後,再設置關閉selinux和關閉防火牆,執行以下命令
chkconfig --level 35 iptables off
vi /etc/selinux/config
最後在五臺虛擬機上都裝上一些依賴庫,在運行yum -y install時,由於linux系統全是純淨的系統,要設置一下以下配置才能正確運行yum -y install,以下
到/etc目錄下配置resolv.conf加入nameserver IP,如:
nameserver 8.8.8.8
nameserver 8.8.4.4
search localdomain
保存退出。
安裝依賴庫:
yum install -y perl-Module-Install.noarch
yum install -y libaio
自此,linux方面的環境已經搞定,需重啓啓動系統,令selinux的配置生效!!
2、MySQL Cluster的安裝和配置
(1)公共配置
下載linux版本的MySQL Cluster到本地中,而後放進linux虛擬機中去。下載地址爲:
http://pan.baidu.com/s/1hqtqJWC
而後,5臺虛擬機作以下的公共操做:
下載獲得的壓縮包拷貝至虛擬機的/root/Downloads目錄,而後在shell中運行如下命令:
cd /root/Downloads tar -xvzf mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz mv mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64 /usr/local/mysql |
(2)配置管理結點(主機:192.168.1.113)
mkdir /var/lib/mysql-cluster cd /var/lib/mysql-cluster gedit config.ini |
配置文件config.ini內容以下:
[ndbd default] NoOfReplicas=2 DataMemory=80M IndexMemory=18M [ndb_mgmd] NodeId=1 hostname=192.168.1.113 datadir=/var/lib/mysql-cluster [ndbd] NodeId=2 hostname=192.168.1.114 datadir=/usr/local/mysql/data [ndbd] [mysqld] [mysqld] NodeId=5 hostname=192.168.1.117 |
安裝管理結點
安裝管理節點,不須要mysqld二進制文件,只須要MySQL Cluster服務端程序(ndb_mgmd)和監聽客戶端程序(ndb_mgm)。在shell中運行如下命令:
cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin cd /usr/local/bin chmod +x ndb_mgm* |
(3)配置數據結點(主機:192.168.1.11四、192.168.1.115)
1. 添加mysql組和用戶
在shell中運行如下命令:
groupadd mysql useradd -g mysql mysql |
2. 配置my.cnf配置文件
vi /etc/my.cnf |
配置文件my.cnf的內容以下:
[mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/usr/local/mysql/sock/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql_cluster] ndb-connectstring=192.168.1.113 |
3. 建立系統數據庫
cd /usr/local/mysql mkdir sock ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data |
4. 設置數據目錄
在shell中運行如下命令:
chown -R root . chown -R mysql.mysql /usr/local/mysql/data chown -R mysql.mysql /usr/local/mysql/sock chgrp -R mysql . |
5. 配置MySQL服務
在shell中運行如下命令:
cp support-files/mysql.server /etc/rc.d/init.d/ chmod +x /etc/rc.d/init.d/mysql.server chkconfig --add mysql.server |
(4)配置SQL結點(192.168.1.11六、192.168.1.117)
1. 添加mysql組和用戶
在shell中運行如下命令:
groupadd mysql useradd -g mysql mysql |
2. 配置my.cnf配置文件
在shell中運行如下命令:
vi /etc/my.cnf |
配置文件my.cnf的內容以下:
[client] socket=/usr/local/mysql/sock/mysql.sock [mysqld] ndbcluster datadir=/usr/local/mysql/data socket=/usr/local/mysql/sock/mysql.sock ndb-connectstring=192.168.1.113 [mysql_cluster] ndb-connectstring=192.168.1.113 |
3. 建立系統數據庫
在shell中運行如下命令:
cd /usr/local/mysql mkdir sock ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data |
4. 設置數據目錄
在shell中運行如下命令:
chown -R root . chown -R mysql.mysql /usr/local/mysql/data chown -R mysql.mysql /usr/local/mysql/sock chgrp -R mysql . |
5. 配置MySQL服務
在shell中運行如下命令:
cp support-files/mysql.server /etc/rc.d/init.d/ chmod +x /etc/rc.d/init.d/mysql.server chkconfig --add mysql.server |
(5)5個節點配置和安裝完畢,啓動測試
注意啓動順序:首先是管理節點,而後是數據節點,最後是SQL節點。
1. 啓動管理結點
在shell中運行如下命令:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini |
還可使用ndb_mgm來監聽客戶端,以下:
ndb_mgm |
2. 啓動數據結點
首次啓動,則須要添加--initial參數,以便進行NDB節點的初始化工做。在之後的啓動過程當中,則是不能添加該參數的,不然ndbd程序會清除在以前創建的全部用於恢復的數據文件和日誌文件。
/usr/local/mysql/bin/ndbd --initial |
若是不是首次啓動,則執行下面的命令
/usr/local/mysql/bin/ndbd |
3. 啓動SQL結點
若MySQL服務沒有運行,則在shell中運行如下命令:
/usr/local/mysql/bin/mysqld_safe --user=mysql & 中止和關閉(開啓,重啓)mysqld服務: /etc/init.d/mysql.server stop(start,restart) |
4. 啓動測試
查看管理節點,啓動成功:
3、集羣測試
1. 測試一
如今咱們在其中一個SQL結點上進行相關數據庫的建立,而後到另一個SQL結點上看看數據是否同步。
在SQL結點1(192.168.1.114)上執行:
shell> /usr/local/mysql/bin/mysql -u root -p mysql>show databases; mysql>create database aa; mysql>use aa; mysql>CREATE TABLE ctest2 (i INT) ENGINE=NDB; //這裏必須指定數據庫表的引擎爲NDB,不然同步失敗 mysql> INSERT INTO ctest2 () VALUES (1); mysql> SELECT * FROM ctest2; |
而後在SQL結點2上看數據是否同步過來了
通過測試,在非master上建立數據,能夠同步到master上
查看錶的引擎是否是NDB,>show create table 表名;
2. 測試二
關閉一個數據節點 ,在另一個節點寫輸入,開啓關閉的節點,看數據是否同步過來。
首先把數據結點1重啓,而後在結點2上添加數據
在SQL結點2(192.168.1.115)上操做以下:
mysql> create database bb; mysql> use bb; mysql> CREATE TABLE ctest3 (i INT) ENGINE=NDB; mysql> use aa; mysql> INSERT INTO ctest2 () VALUES (3333); mysql> SELECT * FROM ctest2; |
等數據結點1啓動完畢,啓動數據結點1的服務
#/usr/local/mysql/bin/ndbd --initial#service mysqld start |
而後登陸進去查看數據
# /usr/local/mysql/bin/mysql -u root –p |
能夠看到數據已經同步過來了,說明數據能夠雙向同步了。
4、關閉集羣
1. 關閉管理節點和數據節點,只須要在管理節點(ClusterMgm--113)裏執行:
shell> /usr/local/mysql/bin/ndb_mgm -e shutdown |
2. 而後關閉Sql節點(135,136),分別在2個節點裏運行:
shell> /etc/init.d/mysql.server stop Shutting down MySQL... SUCCESS! |
注意:要再次啓動集羣,就按照第五部分的啓動步驟便可,不過此次啓動數據節點的時候就不要加」-initial」參數了。