CenterOS 7.5下Mysql Cluster 7.6.13高可用集群搭建

  |   0 评论   |   0 浏览

2cf6dbf1f064c1997f1bec80f45887e3.jpg

节点规划

管理节点(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。

  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
  1. 下载mysql cluster ,这里我们采用7.6.13版本

1.jpg

2.jpg

  1. 假设每个节点都采用mysql用户来运行程序,先在各个节点上创建该用户
groupadd mysql
useradd mysql -r –g mysql

安装 数据和mysql节点上的mysql数据库

  1. 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

3.jpg

在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

4.jpg

设置登录密码

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

5.jpg

管理节点上安装cluster 并初始化

  1. 管理节点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
  1. 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
  1. 创建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
  1. 初始化管理节点

/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/

6.jpg

  1. 检查是否正常启动 ndb_mgmd
ps -ef |grep ndb_mgmd

7.jpg

  1. 编写启动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

  1. 进入bin目录查看集群状态

./ndb_mgm

Show

8.png

12.启动ndbd

/usr/local/mysql-cluster7.6.13/bin/ndbd --initial

注意第一初始化才需要 –initial, 后面启动去掉 –initial 就可以

查看是否启动成功

ps -ef |grep ndbd

13.登录10.20.0.2 查看集群状态

8.png

关闭和开启集群

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脚本)

CenterOS 7.5下Mysql Cluster 7.6.12高可用集群搭建

分别在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