【小鎮的技術天梯】lanmp伺服器叢集搭建(4)mysql-cluster叢集搭建
lanmp叢集搭建的重點來了,這次是搭建mysql叢集,mysql叢集可以說是重中之重,因為最需要用叢集的地方是mysql,現在的web應用的瓶頸基本上都在mysql的負載上面。
【小鎮還是要提醒下大家,其實提升mysql效能的最好方法是寫效能高的mysql語句和加裝ssd固態硬碟】。下面大家來看下mysql叢集的結構圖,如下圖所示:
從結構圖可以看出,mysql叢集分為三個部分。對外提供服務的是SQL節點,也就是圖中的SQL server,儲存資料的是ndbd資料節點,是圖中的NDB-cluster,最後一臺伺服器為Management Server,是管理mysql-cluster的。
搭建mysql叢集最少需要3臺伺服器,小鎮這邊用5臺伺服器,因為這樣更能分割開功能。
首先,小鎮在虛擬機器建立192.168.1.130-134總共5臺伺服器,系統為centos7.2,如下圖所示:
首先在所有的伺服器中都安裝上mysql-cluster,這邊小鎮裝的是mysql-cluster-gpl-7.4.6-linux-glibc2.5 64位的。這是個已經編譯好的安裝包,只要解壓到/usr/local/mysql目錄中就行了。
第一步,配置管理節點,配置mysql-cluster的配置檔案。建立/var/lib/mysql-cluster目錄,在其中建立檔案config.ini,檔案內容如下:
最上面的大小大家根據自己伺服器的記憶體大小自行調節。[ndbd default] NoOfReplicas=2 DataMemory=80M IndexMemory=18M [ndb_mgmd] NodeId=1 hostname=192.168.1.130 datadir=/var/lib/mysql-cluster [ndbd] NodeId=2 hostname=192.168.1.131 datadir=/usr/local/mysql/data [ndbd] NodeId=3 hostname=192.168.1.132 datadir=/usr/local/mysql/data [mysqld] NodeId=4 hostname=192.168.1.133 [mysqld] NodeId=5 hostname=192.168.1.134
第二步,配置資料節點
1. 新增mysql組和使用者
在shell中執行以下命令:
groupadd mysql
useradd -g mysql mysql
2. 配置my.cnf配置檔案
在shell中執行以下命令:
gedit /etc/my.cnf
內容如下:
<span style="font-size:18px;">[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.130</span>
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
第三步:配置sql節點
1. 新增mysql組和使用者
在shell中執行以下命令:
groupadd mysql
useradd -g mysql mysql
2. 配置my.cnf配置檔案
在shell中執行以下命令:
gedit /etc/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.130
[mysql_cluster]
ndb-connectstring=192.168.1.130
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
第四步:啟動mysql叢集。
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 &
現在mysql-cluster就搭建完成了,只有133和134結點是對外服務的。這時候在133中建立一張表test,發現134中的表也相應的同步了,後面的web應用就可以使用133和134節點來進行相應的mysql互動了,小鎮會在下篇文章介紹使用haproxy負載均衡133節點和134節點的mysql流量。