1. 程式人生 > >如何搭建一個 MySQL 分散式叢集

如何搭建一個 MySQL 分散式叢集


1、準備叢集搭建環境


使用6臺虛擬機器來搭建 MySQL分散式叢集 ,相應的實驗環境與對應的MySQL節點之間的對應關係如下圖所示:



管理節點(MGM):這類節點的作用是管理MySQLCluster內的其他節點,如提供配置資料,並停止節點,執行備份等。由於這類節點負責管理其他節點的配置,應該在啟動其他節點之前啟動這類節點。MGM節點是用命令“ndb_mgmd”啟動的;


資料節點(NDB):這類節點用於儲存Cluster的資料,資料節點的數目與副本的數目相關,是片段的倍數。例如,對於兩個副本,每個副本有兩個片段,那麼就有4個數據節點,沒有必要設定過多的副本,在NDB中資料會盡量的儲存在記憶體中。資料節點使用命令“ndb”啟動的;


SQL節點:這是用來訪問Cluster資料的節點,對於MySQL Cluster,客戶端節點是使用NDB Cluster儲存引擎的傳統MySQL伺服器。通常,SQL節點使用命令“mysqld-ndbcluster”啟動的;


2、準備安裝包


在官網上下載mysql的安裝包: mysql-cluster-gpl-7.4.11-Linux-glibc2.5-x86_64.tar.gz,並進行解壓。


3、叢集搭建流程


1]將上述安裝包解壓出來的檔案都移到/usr/local/mysql下;


2]執行script目錄下的mysql-install-db.sh指令碼,執行命令為./mysql-install-db.sh --user=root--basedir =/usr/local/mysql --datadir=/usr/local/mysql;注意其中使用者為root的名稱需要跟配置檔案my.cnf中的相同;


在管理節點,資料節點,SQL節點上都執行上述安裝命令,從而完成對mysql的安裝;


4、叢集配置與啟動


1]在管理節點上需要完成對於叢集整體的配置配置:在/var/lib/mysql-cluster/config.ini中實現如下的配置資訊:



2]在資料節點中需要在my.cnf中完成對於資料節點的相關配置資訊,如下:



需要指明配置的資料節點的根目錄,資料目錄,socket連線配置,使用者配置,以及對應的管理節點的ip地址配置;將配置完成的配置檔案移動到/etc/my.cnf,完成;


3]在SQL節點上完成對於SQL節點的配置資訊,同樣的是在my.cnf中完成相應配置資訊,並將配置檔案移動到/etc/my.cnf中,相應的配置資訊的設定如下所示:



完成以上配置後,就可以啟動叢集中的各個節點了。


5、叢集啟動


在啟動mysql叢集的時候,注意首先要啟動管理節點,並依次啟動其他等若干個節點,相應的啟動步驟如下:


1]在管理節點上,切換到/usr/local/mysql/bin目錄下,執行ndb_mgmd -f /var/lib/mysql-cluster/config.ini命令,完成管理節點的啟動;


2]在各個資料節點上,切換到/usr/local/mysql/bin目錄下,執行ndbd --initial(第一次啟動時,否則執行ndbd即可),完成對資料節點的啟動;


3]在各個SQL節點上,同樣切換到/usr/local/mysql/bin目錄下,執行mysqld_safe --user=root完成啟動;


4]在管理節點上執行ndb_mgm命令,進入資料庫管理的客戶端,輸入show命令,檢視與之相連線的各個節點的狀態;


5]在SQL節點上分別進入系統的安全狀態,並完成對root使用者的密碼修改,執行以下指令,進行密碼修改:


A use mysql,切換到mysql資料庫;


B UPDATE user SET Password = PASSWORD('123456')WHERE user = 'root';從而實現對root密碼的修改;


C flush privilege,完成修改;


6]修改使得任意主機都能連得上mysql,進行如下修改,同樣安裝第5步進入安全模式,並完成相應的修改,如下:


grant all on‘*.*’to ‘[email protected]'%' identified by '123456';


這樣就可以使得任意一個主機都可以通過root使用者來登入mysql了;


6、叢集測試


在叢集上的一個SQL節點上執行建立資料庫,並建立一張表,並完成相應的資料插入,如下:


create database ctest; //建立資料庫

create table test

id int primarykey; //建立一張表

);

insert into test (id)values(1); //完成資料插入


登入另外一個SQL節點,並執行SQL查詢操作,看資料庫中是否已經有資料,如下:


select * from ctest;


如果有資料,表示資料插入成功;


7、關閉叢集


1]首先關閉管理節點和資料節點,需要在管理節點上執行命令,如下:./ndb_mgm -e shutdown;


2]然後關閉SQL節點,在SQL節點上執行命令/usr/local/mysql/support-fies/mysql.server stop(其中/usr/local/mysql/是mysql的安裝目錄).從而關閉SQL節點;