CenterOS 7.5下MySQL Cluster 7.6.12高可用集群搭建
節(jié)點(diǎn)規(guī)劃
管理節(jié)點(diǎn)(1個(gè)): 10.106.224.181
Sql節(jié)點(diǎn)(2個(gè)): 10.106.224.182:3306 10.106.224.183:3306
數(shù)據(jù)節(jié)點(diǎn)(2個(gè)):10.106.224.182 10.106.224.183
安裝mysql cluster 軟件預(yù)先準(zhǔn)備事項(xiàng)
Mysql cluster安裝之前需要將mysql server 卸載掉,如果mysql已經(jīng)卸載,則直接安裝mysqlcluster
1. 刪除原先的mysql 或者 mariadb(三臺(tái)都卸載)
[root@hadoop01 ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@hadoop01 ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
[root@hadoop01 ~]# rpm -qa|grep mariadb
2. 下載mysql cluster ,這里我們采用7.6 版本
3. 假設(shè)每個(gè)節(jié)點(diǎn)都采用mysql用戶(hù)來(lái)運(yùn)行程序,先在各個(gè)節(jié)點(diǎn)上創(chuàng)建該用戶(hù)
Groupadd mysql
Useradd mysql –g mysql
安裝 數(shù)據(jù)和mysql節(jié)點(diǎn)上的mysql數(shù)據(jù)庫(kù)
4. Sql和數(shù)據(jù)節(jié)點(diǎn)10.106.224.182 10.106.224.183 下對(duì)mysql-cluster-gpl-7.6.12-el7-x86_64.tar.gz 進(jìn)行解壓 并安裝mysql
解壓
tar -zxvf mysql-cluster-gpl-7.6.12-el7-x86_64.tar.gz
將解壓的文件拷貝到/usr/local/下 并重命名為mysql-cluster7.6
mv mysql-cluster-gpl-7.6.12-el7-x86_64 /usr/local/mysql-cluster7.6
在mysql-cluster7.6目錄下創(chuàng)建data文件夾
mkdir data
創(chuàng)建my.cnf 文件并放到/etc 下 內(nèi)容如下(注意server_id 要進(jìn)行區(qū)分)
[client]
socket=/usr/local/mysql-cluster7.6/mysql.sock
port=3306
[mysqld]
basedir=/usr/local/mysql-cluster7.6
datadir=/usr/local/mysql-cluster7.6/data
socket=/usr/local/mysql-cluster7.6/mysql.sock
port=3306
symbolic-links=0
log-error=/usr/local/mysql-cluster7.6/mysqld.log
pid-file=/usr/local/mysql-cluster7.6/mysqld.pid
log_bin=mysql-bin
server_id=1
default-storage-engine=innodb
character_set_server=utf8
skip-grant-tables
將mysql-cluster7.6授權(quán)給mysql
chown -R mysql:mysql mysql-cluster7.6
初始化數(shù)據(jù)庫(kù)
cd /usr/local/mysql-cluster7.6/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql-cluster7.6 --datadir=/usr/local/mysql-cluster7.6/data
啟動(dòng)mysql
./mysqld_safe --user=mysql&
檢查是否啟動(dòng)
ps -ef|grep mysql
將mysql路徑添加到/etc/profile便于指令操作
source /etc/profile
設(shè)置登錄密碼
添加 skip-grant-tables 到/etc/my.cnf 中并重啟mysql
Kill 19417 (上圖的mysql 進(jìn)程是19417)
./mysqld_safe --user=mysql&
mysql –u root
update mysql.user set authentication_string=password('123456') where user='root';
flush privileges;
exit
mysql -u root –p
輸入剛設(shè)置的密碼123456
alter user user() identified by '123456';
創(chuàng)建一個(gè)授權(quán)用戶(hù)
grant all privileges on *.* to 'goodhope'@'%' identified by '123456' with grant option;
flush privileges;
exit
添加到服務(wù)中去
cp /usr/local/mysql-cluster7.6/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod a+x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
systemctl enable mysqld
systemctl status mysqld
管理節(jié)點(diǎn)上安裝cluster 并初始化
5. 管理節(jié)點(diǎn)10.106.224.181 下對(duì)mysql-cluster-gpl-7.6.12-el7-x86_64.tar.gz 進(jìn)行解壓
tar -zxvf mysql-cluster-gpl-7.6.12-el7-x86_64.tar.gz
6. 10.106.224.181開(kāi)始安裝mysql cluster
mkdir /usr/local/mysql-cluster7.6
mv mysql-cluster-gpl-7.6.12-el7-x86_64/* /usr/local/mysql-cluster7.6/
chown -R mysql:mysql /usr/local/mysql-cluster7.6
7. 創(chuàng)建config.ini 和 管理節(jié)點(diǎn)配置目錄 文件目錄(后面初始化管理節(jié)點(diǎn)會(huì)用到)
創(chuàng)建目錄為管理節(jié)點(diǎn)初始化使用(放置集群二進(jìn)制配置文件)
mkdir /usr/local/mysql-cluster7.6/cluster-configdir
chown mysql:mysql /usr/local/mysql-cluster7.6/cluster-configdir
創(chuàng)建文件目錄
mkdir /usr/local/mysql-cluster7.6/data
chown mysql:mysql /usr/local/mysql-cluster7.6/data
創(chuàng)建配置文件
cd /usr/local/mysql-cluster7.6/
vi config.ini
內(nèi)容如下:
[ndbd default]
NoOfReplicas=2 #數(shù)據(jù)寫(xiě)入數(shù)量。2表示兩份
DataMemory=512M #配置數(shù)據(jù)存儲(chǔ)可使用的內(nèi)存
IndexMemory=180M #索引給180M
[ndb_mgmd]
nodeid=1
HostName=10.106.224.181 #管理節(jié)點(diǎn)的IP地址
DataDir=/usr/local/mysql-cluster7.6/data #管理節(jié)點(diǎn)的日志
[ndbd]
nodeid=2
HostName=10.106.224.182
DataDir=/usr/local/mysql-cluster7.6/data #mysql數(shù)據(jù)存儲(chǔ)路徑
[ndbd]
nodeid=3
HostName=10.106.224.183
DataDir=/usr/local/mysql-cluster7.6/data
[mysqld]
nodeid=4
HostName=10.106.224.182
[mysqld]
nodeid=5
HostName=10.106.224.183
8. 初始化管理節(jié)點(diǎn)
/usr/local/mysql-cluster7.6/bin/ndb_mgmd --initial --ndb-nodeid=1 -f /usr/local/mysql-cluster7.6/config.ini --configdir=/usr/local/mysql-cluster7.6/cluster-configdir
(#--initial:第一次啟動(dòng)時(shí)加上,其它時(shí)候不要加,不然會(huì)數(shù)據(jù)清空,除非是在備份、恢復(fù)或配置變化后重啟時(shí))
返回結(jié)果如下:
MySQL Cluster Management Server mysql-5.7.28 ndb-7.6.12
2019-12-11 16:42:36 [MgmtSrvr] WARNING -- at line 4: [DB] IndexMemory is deprecated, use Number bytes on each ndbd(DB) node allocated for storing indexes instead
該集群版本使用mysql是5.7.28 ,另外我們從返回警告信息看到IndexMemory 后續(xù)會(huì)針對(duì)各個(gè)db進(jìn)行配置,而不是統(tǒng)一配置了,這個(gè)比較靈活了
查看二進(jìn)制配置路徑
cd cluster-configdir/
9. 檢查是否正常啟動(dòng) ndb_mgmd
ps -ef |grep ndb_mgmd
10. 編寫(xiě)啟動(dòng)sh腳本如下
vi mysql-cluster-start.sh
ndb_mgmd --ndb-nodeid=1 -f /usr/local/mysql-cluster7.6/config.ini --configdir=/usr/local/mysql-cluster7.6/cluster-configdir
授權(quán)執(zhí)行權(quán)限
chmod 700 mysql-cluster-start.sh
11. 進(jìn)入bin目錄查看集群狀態(tài)
./ndb_mgm
Show
配置 數(shù)據(jù)和mysql節(jié)點(diǎn)
12. 修改10.106.224.182 和10.106.224.183 上my.conf 文件
[mysqld]
ndbcluster #使用ndb集群引擎
ndb-connectstring=10.106.224.181 #指定管理集群的ip地址,多個(gè)以,分隔
default-storage-engine=ndbcluster #設(shè)置默認(rèn)引擎
[mysql_cluster]
ndb-connectstring=10.106.224.181
13. 啟動(dòng)ndbd
/usr/local/mysql-cluster7.6/bin/ndbd --initial
注意第一初始化才需要 –initial, 后面啟動(dòng)去掉 –initial 就可以
ps -ef |grep ndbd
14. 登錄10.106.224.181 查看集群狀態(tài)
/usr/local/mysql-cluster7.6/bin/ndb_mgm
show
關(guān)閉和開(kāi)啟集群
15. 關(guān)閉集群
先關(guān)閉管理節(jié)點(diǎn)(10.106.224.181)
ndb_mgm -e shutdown
執(zhí)行完成之后管理節(jié)點(diǎn)會(huì)關(guān)閉,數(shù)據(jù)節(jié)點(diǎn)也會(huì)關(guān)閉,但SQL節(jié)點(diǎn)不會(huì),也就是數(shù)據(jù)庫(kù)服務(wù)需要手動(dòng)到每一臺(tái)服務(wù)器上停止以保證數(shù)據(jù)同步)
到182 和183 上關(guān)閉mysql
16. 開(kāi)啟集群
順序?yàn)?管理節(jié)點(diǎn)→數(shù)據(jù)節(jié)點(diǎn)→SQL節(jié)點(diǎn)。
10.106.224.181啟動(dòng)管理節(jié)點(diǎn)(使用我們創(chuàng)建的sh腳本)
182%20和183%20上啟動(dòng)數(shù)據(jù)節(jié)點(diǎn)
/usr/local/mysql-clester7.6/bin/ndbd
systemctl%20start%20mysqld
systemctl%20status%20mysqld
17. 登錄管理器 查看集群狀態(tài)
測(cè)試機(jī)器同步
18. 測(cè)試數(shù)據(jù)同步
182 上操作
create database test_cluster;
use test_cluster;
CREATE TABLE `test_cluster`.`new_table` (
`id` INT NOT NULL AUTO_INCREMENT,
`namne` VARCHAR(50) NULL,
PRIMARY KEY (`id`));
insert into new_table(namne) values('this is a test for cluster');
183 上進(jìn)行查詢(xún)
select *from test_cluster.new_table
到此mysql 集群安裝完成






