1. 程式人生 > >【小鎮的技術天梯】lanmp伺服器叢集搭建(4)mysql-cluster叢集搭建

【小鎮的技術天梯】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流量。