1、准備
1)操作系統為CentOS,使用root用戶安裝
2)下載mysql-cluster-gpl-7.6.13-el7-x86_64.tar.gz,下載地址https://dev.mysql.com/downloads/cluster/7.6.html。
3)准備3台Linux主機
IP地址 | 作用 |
172.16.43.142 | 管理節點 |
172.16.43.148 | 數據節點、SQL節點 |
172.16.43.149 | 數據節點、SQL節點 |
保證所有主機防火牆對1181和3306端口例外,或直接禁用防火牆
systemctl stop firewalld.service
systemctl disable firewalld.service
2、安裝管理節點(Management Node)
管理節點最好與數據節點不在同一台機器,如果在同一台機器,當這台機器掛了,則整個服務不可用。
1)創建文件/var/lib/mysql-cluster/config.ini
mkdir /var/lib/mysql-cluster
vi /var/lib/mysql-cluster/config.ini
文件內容為(配置說明見:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-configuration.html,https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbd-definition.html):
[ndbd default] NoOfReplicas=2 [ndb_mgmd] NodeId=1 HostName=172.16.43.151 DataDir=/var/lib/mysql-cluster [ndbd] NodeId=11 HostName=172.16.43.153 DataDir=/usr/local/mysql/data [ndbd] NodeId=12 HostName=172.16.43.154 DataDir=/usr/local/mysql/data [mysqld] NodeId=21 HostName=172.16.43.153 [mysqld] NodeId=22 HostName=172.16.43.154
注意:NodeId只能是數字,可以在不同類型節點間空出幾個數字,以備擴展。NoOfReplicas值范圍是1-2。
2)解壓安裝文件,拷貝需要的程序
對於單純管理節點,只需要ndb_mgm和ndb_mgmd,其他解壓內容都可以刪除。
tar zxvf mysql-cluster-gpl-7.6.13-el7-x86_64.tar cd mysql-cluster-gpl-7.6.13-el7-x86_64/ cp bin/ndb_mgm* /usr/local/bin chmod +x /usr/local/bin/ndb_mgm*
3)啟動管理節點,並查看集群信息
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --config-cache=FALSE ndb_mgm
ndb_mgmd啟動參數介紹:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-programs-ndb-mgmd.html
因為我們的數據節點和SQL節點都沒安裝,所有狀態都是not connected。
3、安裝SQL節點(SQL Node)
1)創建mysql用戶和組
groupadd mysql
useradd -g mysql mysql
2)修改/etc/my.cnf文件
vi /etc/my.cnf
修改后的內容為:
[mysqld] ndbcluster
default-storage-engine=ndbcluster
character_set_server=utf8
lower_case_table_names=1
#basedir=/usr/local/mysql #datadir=/usr/local/mysql/data [mysql_cluster] ndb-connectstring=172.16.43.151
配置說明:
default-storage-engine=ndbcluster設置默認Engine。
lower_case_table_names=1,設置大小寫不敏感。
character_set_server=utf8設置字符集,mysql默認字符集不支持漢字
此處datadir與config.ini中的DataDir是不同的設置,一個針對SQL節點,一個針對數據節點,它們的值可以相同,也可以不同,如果相同,且SQL節點與數據節點在同一台主機,則需保證SQL節點要先初始化,不然會報錯。
如果安裝位置不是/usr/local/mysql,則需要basedir參數,不然mysql初始化時有些配置找不到。
3)創建數據存儲目錄並更改屬性
mkdir /usr/local/mysql/data cd /usr/local/mysql/ chown -R mysql data chgrp -R mysql .
3)解壓安裝文件並初始化
tar -xzvf mysql-cluster-gpl-7.6.13-el7-x86_64.tar.gz mv mysql-cluster-gpl-7.6.13-el7-x86_64/ /usr/local/mysql cd /usr/local/mysql ./bin/mysqld --initialize --user=mysql
記住上圖中初始化生成的隨機密碼,丟了我是不曉得在哪可以再找到這個臨時密碼
4)添加並啟動Linux服務
cp support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig --add mysqld service mysqld start
4、安裝數據節點
1)復制ndbd和ndbmtd文件並授權
對於單純數據節點,只需要ndbd和ndbmtd文件,其他解壓文件均可刪除
cd /usr/local/mysql cp bin/ndbd /usr/local/bin/ndbd cp bin/ndbmtd /usr/local/bin/ndbmtd chmod +x /usr/local/bin/ndb*
2)修改my.cnf文件(如果數據節點與SQL節點在同一台服務器,且datadir一樣,這一步可省略)
[mysqld]
ndbcluster
[mysql_cluster]
ndb-connectstring=172.16.43.142
3)創建管理節點config.ini中ndbd定義的DataDir目錄(如果數據節點與SQL節點在同一台服務器,且datadir一樣,這一步可省略)
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data
4)啟動數據節點
ndbd
5、驗證安裝
1)打開管理節點,重新查看各個節點狀態,若出現下圖則表示全部安裝完成
2)登陸mysql,創建'root'@'%'用戶,每個SQL節點都要創建
# 使用'root'%'localhost'用戶登陸 cd /usr/local/mysql/bin ./mysql -u root -p set password = password('abc123'); # 創建'root'@'%' create user 'root'@'%' identified by 'abc123'; grant all on *.* to 'root'@'%' with grant option;
3)使用數據庫連接工具創建數據庫表,注意表的Engine為ndbcluster(也可以在my.cnf中設置默認引擎),這樣2個SQL節點都可以看到這張表和表中的數據了。
出現的問題:
1、啟動ndb_mgmd時報,Could not create directory '/usr/local/mysql/mysql-cluster'. Either create it manually or specify a different directory with --configdir=<path>
解決方式一:增加--config-cache=FALSE
解決方式二:配置--configdir參數為已存在的目錄
解決方式三:創建默認的/usr/local/mysql/mysql-cluster目錄
2、mysqld(API) not connected(如下圖),檢測防火牆是否打開了。
其他:
官網安裝介紹:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-linux-binary.html