1.從官網下載mysql-cluster安裝包: https://dev.mysql.com/downloads/cluster/
2.解壓安裝包
#上傳到服務器目錄/usr/softwares並解壓 tar -xzvf mysql-cluster-gpl-7.5.15-linux-glibc2.12-x86_64.tar.gz #新建/usr/local/mysql目錄 mkdir /usr/local/mysql #將解壓的文件重命名為mysql,並放到/usr/local/mysql目錄下 mv mysql-cluster-gpl-7.6.7-linux-glibc2.12-x86_64 /usr/local/mysql
3.配置安裝管理節點
1)新增管理節點命令
#將文件ndb_mgm和ndb_mgmd拷貝到/usr/local/bin/目錄下 cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin/ #ndb_mgm,ndb客戶端命令 #ndb_mgmd,ndb管理節點啟動命令 #ndb_mgm是ndb_mgmd(MySQL Cluster Server)的客戶端管理工具,通過它可以方便的檢查Cluster的狀態、啟動備份、關閉Cluster等功能。
2)修改管理節點的配置文件
#創建數據庫集群配置文件的目錄 mkdir /var/lib/mysql-cluster #創建並編輯配置文件 vim /var/lib/mysql-cluster/config.ini [ndbd default] NoOfReplicas=2 #數據節點的個數 DataMemory=512M IndexMemory=64M [ndb_mgmd] #管理節點 NodeId=1 hostname=192.168.17.130 datadir=/var/lib/mysql-cluster/ [ndbd] #數據節點 NodeId=2 hostname=192.168.17.131 datadir=/usr/local/mysql/data/ [ndbd] NodeId=3 hostname=192.168.17.132 datadir=/usr/local/mysql/data/ [mysqld] #sql節點 NodeId=4 hostname=192.168.17.133 [mysqld] NodeId=5 hostname=192.168.17.134
[NDBD DEFAULT]:表示每個數據節點的默認配置,在每個節點的[NDBD]中不用再寫這些選項,只能有一個。
NoOfReplicas:副本數量,數據節點數必須是副本數的整數倍。
[NDB_MGMD]:表示管理節點的配置,只有一個,默認的對其他節點的端口是1186,故服務器需要開放1186端口。
[NDBD]:表示每個數據節點的配置,可以有多個,分別寫上不同數據節點的IP地址。
[MYSQLD]:表示SQL節點的配置,可以有多個,分別寫上不同SQL節點的IP地址。
3)啟動管理節點
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
ndb_mgmd是mysql cluster的管理服務器,后面的-f表示后面的參數是啟動的參數配置文件。如果在啟動后過了幾天又添加了一個數據節點,這時修改了配置文件啟動時就必須加上--initial參數,不然添加的節點不會作用在mysql cluster中。
3.配置安裝數據節點
1)配置my.cnf文件
[mysqld] datadir=/usr/local/mysql/data basedir=/usr/local/mysql character_set_server=utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql_cluster] ndb-connectstring=192.168.17.130:1186
2)新增用戶和權限
#分別添加mysql組和mysql用戶 groupadd mysql useradd mysql -g mysql #進入mysql目錄 cd /usr/local/mysql/ #把mysql的目錄設置成所有者為root chown -R root . #創建data目錄,並把data目錄設置所有者為mysql mkdir data chown -R mysql data #把mysql的目錄改成所屬組為mysql chgrp -R mysql .
3)安裝數據庫
#執行安裝腳本,初始化數據庫 ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ #注意其中用戶為mysql的名稱需要跟配置文件my.cnf中的user=mysql相同 #另外,這里一定要把--basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ 加上, #否則會最后啟動MySQL服務的時候會出現"table mysql.plugin doesn't exist","Can\'t open the mysql.plugin table. Please run mysql_upgrade to create it."錯誤,以及"PID"獲取失敗的錯誤
在安裝的打印信息最后,有首次登陸的密碼,需要特別注意;
4)設置mysqld服務開機自啟
#加入到service服務 cp support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld #加入到開機自啟動列表 chkconfig --add mysqld
5)修改數據庫密碼
#啟動數據庫 [root@localhost bin]# service mysqld start #進入客戶端 [root@localhost bin]# ./mysql -uroot -p Enter password:這里輸入之前的臨時密碼 #修改密碼 mysql> set password=password('新密碼'); #注意此密碼必須要與其他服務器上的數據庫設置的密碼相同
6)啟動數據節點
cd /usr/local/mysql ./bin/ndbd --initial #非第一次啟動,命令如下 ./bin/ndbd
安裝后第一次啟動數據節點時要加上--initial參數。在以后的啟動過程中,則是不能添加該參數的,否則ndbd程序會清除在之前建立的所有用於恢復的數據文件和日志文件。
4.配置安裝sql節點
1)配置my.cnf文件
[mysqld] ndbcluster datadir=/usr/local/mysql/data basedir=/usr/local/mysql character_set_server=utf8 default-storage-engine=ndbcluster port=3306 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql_cluster] ndb-connectstring=192.168.17.130:1186
2)安裝mysql數據庫
3)啟動sql節點
service mysqld start
如果提示:mysql:mysql is neither service nor target!?報錯,則執行:
systemctl unmask mysqld
service mysql start
5.測試
1)管理節點查看
ndb_mgm ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.17.131 (mysql-5.7.23 ndb-7.6.7, Nodegroup: 0, *) id=3 @192.168.17.132 (mysql-5.7.23 ndb-7.6.7, Nodegroup: 1) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.17.130 (mysql-5.7.23 ndb-7.6.7) [mysqld(API)] 2 node(s) id=4 @192.168.17.133 (mysql-5.7.23 ndb-7.6.7) id=5 @192.168.17.134 (mysql-5.7.23 ndb-7.6.7)
2)測試數據
#登陸數據庫 cd /usr/local/mysql ./bin/mysql -uroot -p Enter password:輸入密碼 #創建數據庫mytest mysql> create database mytest; #切換到mytest數據庫 mysql> use mytest; #創建表結構sys_myfirst mysql> create table sys_myfirst(id varchar(36) primary key, name varchar(100), memo varchar(255)); #在sys_myfirst中添加幾條數據 mysql> insert into sys_myfirst(id, name, memo) values('1','test1','hello world!'); mysql> insert into sys_myfirst(id, name, memo) values('2','test2','hello world haha!'); mysql> insert into sys_myfirst(id, name, memo) values('3','test3','hello world hehe!'); #查看數據 mysql> select * from sys_myfirst; +----+-------+-------------------+ | id | name | memo | +----+-------+-------------------+ | 2 | test2 | hello world haha! | | 1 | test1 | hello world! | | 3 | test3 | hello world hehe! | +----+-------+-------------------+ 3 rows in set (0.00 sec)
3)在另一個sql節點查詢
#這里就省去登陸mysql客戶端的步驟了 #查看數據 mysql> select * from sys_myfirst; +----+-------+-------------------+ | id | name | memo | +----+-------+-------------------+ | 1 | test1 | hello world! | | 3 | test3 | hello world hehe! | | 2 | test2 | hello world haha! | +----+-------+-------------------+ 3 rows in set (0.00 sec)
6.啟動和停止管理節點
啟動順序:管理節點—數據節點—sql節點
停止順序:管理節點(會同時停止管理節點和數據節點)—sql節點
停止管理節點:
#第一種方法 ndb_mgm -e shutdown #第二種方法 ndb_mgm ndb_mgm> shutdown;
停止sql節點:
service mysqld stop
7.數據存放位置
在數據節點上通過lsof -c ndb命令(以root身份運行)來找出包含ndb進程所有打開的文件,
發現其真正存儲數據的位置在mysql/data/ndb_3_fs/下面(3數字是config.ini的節點id),
各個文件夾中的文件是以16.7M為單位存儲的,臨時文件達到16.7M后就另起一個。
參考文檔:
1.mysql-cluster集群搭建:
https://blog.csdn.net/qq_15092079/article/details/82665307
https://blog.csdn.net/csolo/article/details/87086086
https://www.cnblogs.com/linkstar/p/6510713.html
2.增加管理節點:
https://blog.csdn.net/cf20160405/article/details/77864123
3.增加數據節點:
https://blog.csdn.net/yabingshi_tech/article/details/47953109
4.官方文檔:
https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-configuration.html
5.mysqlcluster+haproxy+keepalived
https://blog.csdn.net/csolo/article/details/87363388