CenterOS 7.5下MySQL Cluster 7.6.12高可用集群搭建
節(jié)點規(guī)劃
管理節(jié)點(1個): 10.106.224.181
Sql節(jié)點(2個): 10.106.224.182:3306 10.106.224.183:3306
數據節(jié)點(2個):10.106.224.182 10.106.224.183
安裝mysql cluster 軟件預先準備事項
Mysql cluster安裝之前需要將mysql server 卸載掉,如果mysql已經卸載,則直接安裝mysqlcluster
1. 刪除原先的mysql 或者 mariadb(三臺都卸載)
[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. 假設每個節(jié)點都采用mysql用戶來運行程序,先在各個節(jié)點上創(chuàng)建該用戶
Groupadd mysql
Useradd mysql –g mysql
安裝 數據和mysql節(jié)點上的mysql數據庫
4. Sql和數據節(jié)點10.106.224.182 10.106.224.183 下對mysql-cluster-gpl-7.6.12-el7-x86_64.tar.gz 進行解壓 并安裝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 下 內容如下(注意server_id 要進行區(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授權給mysql
chown -R mysql:mysql mysql-cluster7.6
初始化數據庫
cd /usr/local/mysql-cluster7.6/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql-cluster7.6 --datadir=/usr/local/mysql-cluster7.6/data
啟動mysql
./mysqld_safe --user=mysql&
檢查是否啟動
ps -ef|grep mysql
將mysql路徑添加到/etc/profile便于指令操作
source /etc/profile
設置登錄密碼
添加 skip-grant-tables 到/etc/my.cnf 中并重啟mysql
Kill 19417 (上圖的mysql 進程是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
輸入剛設置的密碼123456
alter user user() identified by '123456';
創(chuàng)建一個授權用戶
grant all privileges on *.* to 'goodhope'@'%' identified by '123456' with grant option;
flush privileges;
exit
添加到服務中去
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é)點上安裝cluster 并初始化
5. 管理節(jié)點10.106.224.181 下對mysql-cluster-gpl-7.6.12-el7-x86_64.tar.gz 進行解壓
tar -zxvf mysql-cluster-gpl-7.6.12-el7-x86_64.tar.gz
6. 10.106.224.181開始安裝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é)點配置目錄 文件目錄(后面初始化管理節(jié)點會用到)
創(chuàng)建目錄為管理節(jié)點初始化使用(放置集群二進制配置文件)
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
內容如下:
[ndbd default]
NoOfReplicas=2 #數據寫入數量。2表示兩份
DataMemory=512M #配置數據存儲可使用的內存
IndexMemory=180M #索引給180M
[ndb_mgmd]
nodeid=1
HostName=10.106.224.181 #管理節(jié)點的IP地址
DataDir=/usr/local/mysql-cluster7.6/data #管理節(jié)點的日志
[ndbd]
nodeid=2
HostName=10.106.224.182
DataDir=/usr/local/mysql-cluster7.6/data #mysql數據存儲路徑
[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é)點
/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:第一次啟動時加上,其它時候不要加,不然會數據清空,除非是在備份、恢復或配置變化后重啟時)
返回結果如下:
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ù)會針對各個db進行配置,而不是統(tǒng)一配置了,這個比較靈活了
查看二進制配置路徑
cd cluster-configdir/
9. 檢查是否正常啟動 ndb_mgmd
ps -ef |grep ndb_mgmd
10. 編寫啟動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
授權執(zhí)行權限
chmod 700 mysql-cluster-start.sh
11. 進入bin目錄查看集群狀態(tài)
./ndb_mgm
Show
配置 數據和mysql節(jié)點
12. 修改10.106.224.182 和10.106.224.183 上my.conf 文件
[mysqld]
ndbcluster #使用ndb集群引擎
ndb-connectstring=10.106.224.181 #指定管理集群的ip地址,多個以,分隔
default-storage-engine=ndbcluster #設置默認引擎
[mysql_cluster]
ndb-connectstring=10.106.224.181
13. 啟動ndbd
/usr/local/mysql-cluster7.6/bin/ndbd --initial
注意第一初始化才需要 –initial, 后面啟動去掉 –initial 就可以
ps -ef |grep ndbd
14. 登錄10.106.224.181 查看集群狀態(tài)
/usr/local/mysql-cluster7.6/bin/ndb_mgm
show
關閉和開啟集群
15. 關閉集群
先關閉管理節(jié)點(10.106.224.181)
ndb_mgm -e shutdown
執(zhí)行完成之后管理節(jié)點會關閉,數據節(jié)點也會關閉,但SQL節(jié)點不會,也就是數據庫服務需要手動到每一臺服務器上停止以保證數據同步)
到182 和183 上關閉mysql
16. 開啟集群
順序為 管理節(jié)點→數據節(jié)點→SQL節(jié)點。
10.106.224.181啟動管理節(jié)點(使用我們創(chuàng)建的sh腳本)
182%20和183%20上啟動數據節(jié)點
/usr/local/mysql-clester7.6/bin/ndbd
systemctl%20start%20mysqld
systemctl%20status%20mysqld
17. 登錄管理器 查看集群狀態(tài)
測試機器同步
18. 測試數據同步
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 上進行查詢
select *from test_cluster.new_table
到此mysql 集群安裝完成