CenterOS 7.5下Mysql Cluster 7.6.13高可用集群搭建
节点规划
管理节点(1个): 10.20.0.1 (可以有多个)
SQL节点(2个): 10.20.0.3:13306 10.20.0.4:13306
数据节点(2个):10.20.0.3 10.20.0.4
安装mysql cluster 软件预先准备事项
Mysql cluster安装之前需要将mysql server 卸载掉,如果mysql已经卸载,则直接安装mysqlcluster。
- 删除原先的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
- 下载mysql cluster ,这里我们采用7.6.13版本
- 假设每个节点都采用mysql用户来运行程序,先在各个节点上创建该用户
groupadd mysql
useradd mysql -r –g mysql
安装 数据和mysql节点上的mysql数据库
- Sql节点和数据节点:10.20.0.1和10.20.0.2 下对mysql-cluster-gpl-7.6.13-el7-x86_64.tar.gz 进行解压 并安装mysql
解压
tar -zxvf mysql-cluster-gpl-7.6.13-el7-x86_64.tar.gz
将解压的文件拷贝到/usr/local/下 并重命名为mysql-cluster7.6.13
mv mysql-cluster-gpl-7.6.13-el7-x86_64 /usr/local/mysql-cluster7.6.13
在mysql-cluster7.6.13目录下创建data文件夹
mkdir data
创建my.cnf 文件并放到/etc 下 内容如下(注意server_id 要进行区分)
[client]
socket=/usr/local/mysql-cluster7.6.13/mysql.sock
port=13306
[mysqld]
ndbcluster #使用ndb集群引擎
ndb-connectstring=10.20.0.1 #指定管理集群的ip地址,多个以,分隔
default-storage-engine=ndbcluster #设置默认引擎
basedir=/usr/local/mysql-cluster7.6.13
datadir=/usr/local/mysql-cluster7.6.13/data
socket=/usr/local/mysql-cluster7.6.13/mysql.sock
port=13306
symbolic-links=0
log-error=/usr/local/mysql-cluster7.6.13/logs/mysqld.log
pid-file=/usr/local/mysql-cluster7.6.13/mysqld.pid
log_bin=mysql-bin
server_id=1
character_set_server=utf8
skip-grant-tables #初始化时设置,不需要密码验证,设置完密码后必须删除。
[mysql_cluster]
ndb-connectstring=10.20.0.1
将mysql-cluster7.6.13授权给mysql
chown -R mysql:mysql mysql-cluster7.6.13
初始化数据库
cd /usr/local/mysql-cluster7.6.13/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql-cluster7.6.13 --datadir=/usr/local/mysql-cluster7.6.13/data
启动mysql
./mysqld_safe --user=mysql&
检查是否启动
ps -ef|grep 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';
创建一个授权用户
grant all privileges on . to 'goodhope'@'%' identified by '123456' with grant option;
flush privileges;
exit
添加到服务中去
cp /usr/local/mysql-cluster7.6.13/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
管理节点上安装cluster 并初始化
- 管理节点10.20.0.1 下对mysql-cluster-gpl-7.6.13-el7-x86_64.tar.gz 进行解压
tar -zxvf mysql-cluster-gpl-7.6.12-el7-x86_64.tar.gz
- 10.20.0.1 开始安装mysql cluster
mkdir /usr/local/mysql-cluster7.6.13
mv mysql-cluster-gpl-7.6.13-el7-x86_64 /usr/local/mysql-cluster7.6.13
chown -R mysql:mysql /usr/local/mysql-cluster7.6.13
- 创建config.ini 和 管理节点配置目录 文件目录(后面初始化管理节点会用到)
创建目录为管理节点初始化使用(放置集群二进制配置文件)
mkdir /usr/local/mysql-cluster7.6.13/cluster-configdir
chown mysql:mysql /usr/local/mysql-cluster7.6.13/cluster-configdir
创建文件目录
mkdir /usr/local/mysql-cluster7.6.13/data
chown mysql:mysql /usr/local/mysql-cluster7.6.13/data
创建配置文件
cd /usr/local/mysql-cluster7.6.13/
vi config.ini
内容如下:
[NDBD DEFAULT]
NoOfReplicas=2 #每个数据节点的镜像数量,通常最低设置为2。
DataMemory=512M #每个数据节点中给数据分配的内存
IndexMemory=180M #每个数据节点中给索引分配的内存 7.6不推荐使用
MaxNoOfConcurrentTransactions=8192
MaxNoOfConcurrentOperations=100000
MaxNoOfLocalOperations=110000
NoOfFragmentLogFiles=128
TimeBetweenLocalCheckpoints=6
FragmentLogFileSize=512M
RedoBuffer=64M
TransactionBufferMemory=512M
[NDB_MGMD]
NodeId=1 #管理节点ip
HostName=10.20.0.1
DataDir=/usr/local/mysql-cluster7.6.13/data/ #管理节点数据目录,存放相关日志,以及pid文件
[NDBD] #数据节点1
NodeId=2
HostName=10.20.0.3
DataDir=/usr/local/mysql-cluster7.6.13/data/
[NDBD] #数据节点2
NodeId=3
HostName=10.20.0.4
DataDir=/usr/local/mysql-cluster7.6.13/data/
[MYSQLD] #SQL节点1
NodeId=4
HostName=10.20.0.3
[MYSQLD] #SQL节点2
NodeId=5
HostName=10.20.0.4
- 初始化管理节点
/usr/local/mysql-cluster7.6.13/bin/ndb_mgmd --initial --ndb-nodeid=1 -f /usr/local/mysql-cluster7.6.13/config.ini --configdir=/usr/local/mysql-cluster7.6.13/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 后续会针对各个db进行配置,而不是统一配置了,这个比较灵活了
查看二进制配置路径
cd cluster-configdir/
- 检查是否正常启动 ndb_mgmd
ps -ef |grep ndb_mgmd
- 编写启动sh脚本如下(不是必须)
vi mysql-cluster-start.sh
/usr/local/mysql-cluster7.6.13/bin/ndb_mgmd --ndb-nodeid=1 -f /usr/local/mysql-cluster7.6.13/config.ini --configdir=/usr/local/mysql-cluster7.6.13/cluster-configdir
授权执行权限
chmod 700 mysql-cluster-start.sh
- 进入bin目录查看集群状态
./ndb_mgm
Show
12.启动ndbd
/usr/local/mysql-cluster7.6.13/bin/ndbd --initial
注意第一初始化才需要 –initial, 后面启动去掉 –initial 就可以
查看是否启动成功
ps -ef |grep ndbd
13.登录10.20.0.2 查看集群状态
关闭和开启集群
14.关闭集群
先关闭管理节点(10.20.0.1)
ndb_mgm -e shutdown
执行完成之后管理节点会关闭,数据节点也会关闭,但SQL节点不会,也就是数据库服务需要手动到每一台服务器上停止以保证数据同步)
到10.20.0.3 和10.20.0.4 上关闭mysql
15.开启集群
顺序为 管理节点→数据节点→SQL节点。(顺序不能错)
10.20.0.1启动管理节点(使用我们创建的sh脚本)
分别在10.20.0.3 和10.20.0.4上启动数据节点
/usr/local/mysql-clester7.6.13/bin/ndbd
/etc/rc.d/init.d/mysqld start 或 systemctl start mysqld
/etc/rc.d/init.d/mysqld stop 或 systemctl stop mysqld
测试机器同步
16.测试数据同步
10.20.0.3 上操作
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');
10.20.0.4 上进行查询
select *from test_cluster.new_table
部署成功,收工!!!
参考文档:https://www.solves.com.cn/it/sjk/MYSQL/2019-12-13/9943.html
https://blog.csdn.net/weitry/article/details/80579975
https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbd-definition.html
标题:CenterOS 7.5下Mysql Cluster 7.6.13高可用集群搭建
作者:zytops
地址:https://www.zytops.com/articles/2020/04/26/1587864000074.html