這是我第一次接觸Linux,CentOS, MySQL,用了5天的時間終於將基於CentOS5.0系統下MySQL-Cluster架構成功,下面將我這些經驗分享給你們。若發現有什麼錯誤和疏忽之處,請發郵件給我: stan_home@qq.com。 mysql
(PDF圖文版請下載,地址:http://download.csdn.net/source/3365704) linux
配置以前,先補充一些Linux經常使用命令: sql
ls 瀏覽 數據庫
ls -l 查看文件夾及文件權限 vim
vi 文本編輯器(搜索、編輯) 網絡
i 狀態爲修改 架構
退出:「Esc」鍵後,而後輸入":",而後輸入「wq」寫入、退出 dom
:q! 強制退出 socket
vim -f [文件名] 強制恢復文件 tcp
cp 拷貝文件命令
rm 刪除文件
mkdir 建立文件夾
ln 鏈接問價或目錄
man [命令] 查看命令參數
ifconfig 網卡信息命令
dig (域信息搜索器)
df 查看系統文件
vmstat 系統狀態
ps 查看進程(-e顯示所有,-f全格式輸出)
ps -ef|grep mysql 查看全部mysql進程
Tips:輸入一個文件或文件名,按一下Tab鍵,會自動完成改文件名(前提是這個文件或文件夾必須存在);
例如:
輸入
[root@localhost tmp]# tar –xzvf mysql-c
按一下Tab鍵自動完成:
[root@localhost tmp]# tar –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz
下面,咱們一塊兒來架構吧!
1、配置環境:
OS:Linux CentOS 5.0
MySQL: mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz (注意:需用Cluster版本,可在官網上下載 http://dev.mysql.com/downloads/cluster/#downloads)
節點配置狀況:
MGM:192.168.20.231
NDBD1:192.168.20.232
NDBD2:192.168.20.233
SQL1:192.168.20.234
SQL2:192.168.20.235
修改CentOS IP地址
(1)打開/etc/sysconfig/network-scripts/ifcfg-eth0文件,作以下修改
# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HWADDR=00:0c:29:be:b3:53
IPADDR=192.168.20.231
NETMASK=255.255.255.0
GATEWAY=192.168.20.1
(2)修改/etc/resolv.conf文件, 以下(修改DNS服務)
nameserver 202.101.172.35
search localdomain
(3)重啓網絡服務
[root@localhost ~]# service network restart
2、軟件安裝:
(一)管理節點MGM
配置管理節點
首先在合適的位置,建立一個管理節點的配置文件,步驟以下:
[root@localhost ~]# mkdir /var/lib/mysql-cluster
[root@localhost ~]# cd /var/lib/mysql-cluster
[root@localhost mysql-cluster]# vi config.ini
配置文件config.ini內容以下:
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[tcp default]
portnumber=2202
[ndb_mgmd]
hostname=192.168.20.231
datadir=/var/lib/mysql-cluster
[ndbd]
hostname=192.168.20.232
datadir=/usr/local/mysql/data
[ndbd]
hostname=192.168.20.233
datadir=/usr/local/mysql/data
[mysqld]
hostname=192.168.20.234
[mysqld]
hostname=192.168.20.235
安裝管理節點,不須要mysqld二進制文件,只須要MySQL Cluster服務端程序(ndb_mgmd)和監聽客戶端程序(ndb_mgm)。這兩個文件都在下載的MySQL-cluster文件解壓後的bin 文件夾中。執行以下步驟,在集羣的管理節點上安裝ndb_mgmd 和 ndb_mgm。
一、改變地址到/var/tmp目錄下,解壓MySQL-Cluster壓縮文件,取出ndb_mgm和ndb_mgmd複製到/usr/local/bin 目錄下。
[root@localhost ~]# cd /var/tmp
[root@localhost tmp]# tar –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz
[root@localhost tmp]# cd mysql-cluster-gpl-7.1.13-linux-i686-glibc23
[root@localhost tmp]# cp bin/ndb_mgm* /usr/local/bin
二、改變路徑爲拷貝到的目錄下,並確保這兩個文件可執行。
[root@localhost tmp]# cd /usr/local/bin
[root@localhost bin]# chmod +x ndb_mgm*
三、在/usr/local下建立mysql文件夾。
[root@localhost ~]# cd /usr/local
[root@localhost local]# mkdir mysql
(二)、數據節點NDBD和SQL節點
配置數據節點NDBD和SQL節點
在每個SQL節點中的/etc目錄下找到my.cnf文件,並作以下配置:
[client]
socket=/usr/local/mysql/sock/mysql.sock
[mysqld]
ndbcluster
datadir=/usr/local/mysql
socket=/usr/local/mysql/sock/mysql.sock
ndb-connectstring=192.168.20.231
old_passwords=1
[mysql_cluster]
ndb-connectstring=192.168.20.231
在每個數據節點NDBD和SQL節點的機器上,用root用戶執行下面的步驟。
一、檢查/etc/passwd 和 /etc/group 文件,是否存在mysql組和mysql用戶,若是沒有,用下面的命令建立一個mysql組,並在改組中添加mysql用戶。
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd –g mysql mysql
二、改變文件夾位置到mysql壓縮包的存放位置,解壓文件,準備安裝,步驟以下:
(下載文件能夠從其餘電腦映射, 在/home/下面建立一個download文件夾,若是是在本機Linux下下載的文件,則不須要此映射步驟。)
[root@localhost ~]# mount -t cifs -o username="name",password="password" //192.168.20.210/MySQL /home/download
[root@localhost ~] cp /home/download/ mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz /var/tmp
[root@localhost ~]# cd /var/tmp
[root@localhost tmp]# tar –C /usr/local –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz
三、改變位置到local文件夾,改變mysql解壓後的文件夾名稱爲mysql,而後執行提供的腳本,建立系統數據庫。
[root@localhost tmp]# cd /usr/local
[root@localhost local]# mv mysql-cluster-gpl-7.1.13-linux-i686-glibc23/ mysql/
[root@localhost local]# cd mysql
[root@localhost mysql]# mkdir sock
[root@localhost mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql
四、爲MySQL服務及數據目錄設置必要的服務。
[root@localhost mysql]# chown -R root .
[root@localhost mysql]# chown -R mysql.mysql /usr/local/mysql/data
[root@localhost mysql]# chown -R mysql.mysql /usr/local/mysql/sock
[root@localhost mysql]# chgrp -R mysql .
[root@localhost mysql]# ls -l
五、複製MySQL的啓動腳本到以下的文件夾,確保能夠執行。並設置爲當系統啓動時,同時啓動MySQL。
[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/
[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysql.server
[root@localhost mysql]# chkconfig --add mysql.server
3、Cluster環境啓動
注意啓動順序:首先是管理節點,而後是NDBD節點,最後是SQL節點。
一、[MGM]
[root@localhost ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini
使用ndb_mgm來監聽客戶端,以下:
[root@localhost ~]# ndb_mgm
二、[NDBD]
首次啓動,則須要添加--initial參數,以便進行NDB節點的初始化工做。在之後的啓動過程當中,則是不能添加該參數的,不然ndbd程序會清除在以前創建的全部用於恢復的數據文件和日誌文件。
[root@localhost ~]# /usr/local/mysql/bin/ndbd --initial
若是不是首次啓動,則執行下面的命令。
[root@localhost ~]# /usr/local/mysql/bin/ndbd
三、[SQLD]
/usr/local/mysql/bin/mysqld_safe --user=mysql &
有可能出現上圖問題,是系統數據庫建立問題,只需再次建立系統數據庫,方法以下:
[root@localhost mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql
再次啓動
/usr/local/mysql/bin/mysqld_safe --user=mysql &
查看管理節點,啓動成功:
4、測試
一、常規測試:
在節點4上面:
爲了讓表在cluster中正常複製,建立一個表必須使用ndbcluster引擎(engine=ndb Or engine=ndbcluster)方法以下:
mysql>use test
mysql>create table teacher(t_id int) engine=ndb;
若是是一個已經存在的表,用alter table修改表的引擎。
mysql>alter table student engine=ndb;
插入一條數據:
mysql>insert into teacher values(133);
而後在節點5上:
mysql>select * from teacher;
兩個節點數據保持一致,恭喜你,測試成功!
二、模擬NDB節點Crash:
在節點2上終止掉NDB進程,而後再分別經過兩個SQL節點去訪問teacher表,查看是否能夠正常訪問,數據是否一致。以下:
查看進程
[root@localhost ~]# ps -ef
[root@localhost ~]# kill 3344
[root@localhost ~]# ps -ef
查看管理節點,顯示節點2已關閉。
節點4上面:
在節點5上面:
再回到節點4上面:
測試成功,當有一個NDB節點Crash後,整個MySQL Cluster環境仍能夠正常服務。
三、模擬SQL節點Crash:
Kill掉節點4的mysqld進程,而後經過節點5進行訪問,以下:
能夠看到節點4 Crash以後,節點5仍然能夠繼續正常服務,測試成功。