MySQL Cluster 集群部署
前言
此篇博客用以介绍 MySQL Cluster 集群部署方法
一、节点规划
序号 IP地址 节点名称 1 172.16.1.201 mysql-manage 2 172.16.1.202 mysql-sql1 3 172.16.1.203 mysql-sql2
二、系统版本
[root@node1 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
三、关闭防火墙
[root@node1 ~]# systemctl stop firewalld [root@node1 ~]# systemctl disable firewalld
四、关闭 selinux
[root@node1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config [root@node1 ~]# setenforce 0
五、配置 hosts
[root@node1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.1.201 mysql-manage 172.16.1.202 mysql-sql1 172.16.1.203 mysql-sql2
六、下载软件包
推荐使用国内镜像,在 windows 选择版本后下载
http://mirrors.sohu.com/mysql/MySQL-Cluster-7.5 将下载后的包上传至服务器 /usr/local 下
七、安装配置管理节点
解压
cd /usr/local
tar xf mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64.tar.gz
取出需要命令
cd mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64
cp bin/ndb_mgm* /usr/local/bin
新建配置文件并且初始化管理节点
mkdir /var/lib/mysql-cluster ln -s /usr/local/mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64 /usr/local/mysql vi /var/lib/mysql-cluster/config.ini [ndbd default] NoOfReplicas=2 DataMemory=512M IndexMemory=18M [ndb_mgmd] HostName=172.16.1.201 DataDir=/var/lib/mysql-cluster [ndbd] HostName=172.16.1.202 DataDir=/var/lib/mysql-cluster [ndbd] HostName=172.16.1.203 DataDir=/var/lib/mysql-cluster [mysqld] [mysqld]
使用配置文件初始化管理节点
/usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial 出现MySQL Cluster Management Server mysql-5.7.16 ndb-7.5.12证明初始化成功 使用ndb_mgm命令查看管理状态 ndb_mgm>show(使用show命令查看管理情况,当数据节点配置完毕之后,我们再用这个命令查看和管理)
八、安装配置数据和 mysql 节点
以下的所有操作需要在另外两台机器进行相同的操作
新增用户组mysql和用户msyql
groupadd mysql
useradd -g mysql -s /bin/false mysql
新建文件夹并赋予权限
mkdir /var/lib/mysql-cluster
chown root:mysql /var/lib/mysql-cluster
将包传至服务器/usr/local下
scp /usr/local/mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64.tar.gz root@172.16.1.202:/uar/local
scp /usr/local/mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64.tar.gz root@172.16.1.203:/uar/local
解压并创建软链接
cd /usr/local tar xf mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64.tar.gz ln -s /usr/local/mysql-cluster-gpl-7.5.12-linux-glibc2.12-x86_64 /usr/local/mysql
mysql初始化以及启动
cd /usr/local/mysql/bin 一共需要两次初始化 第一次初始化 ./mysqld --initialize 修改权限 cd /usr/local/mysql chown -R root . chgrp -R mysql . 复制启动文件并启动mysql cp support-files/mysql.server /etc/rc.d/init.d/ chmod +x /etc/rc.d/init.d/mysql.server chkconfig --add mysql.server /etc/init.d/mysql.server start 第一次启动会报错,不要慌,再次初始化 cd /usr/local/mysql/bin ./mysqld --initialize 这时会在上层目录生成data目录 cd /usr/local/mysql chown -R mysql. data 配置数据节点(ip均填写管理节点) vi /etc/my.cnf [mysqld] ndbcluster ndb-connectstring=172.16.1.201 [mysql_cluster] ndb-connectstring=172.16.1.201 配置完成后,再次启动mysql即可 /etc/init.d/mysql.server start
修改数据库密码并保持两节点相同(密码会在初始化时生成)
mysql -uroot -p密码 alter user 'root'@'localhost' identified by '密码'; 修改完记得exit后用新密码再次登录尝试
ndb节点初始化
/usr/local/mysql/bin/ndbd --initial 如果出现下述现象就成功了 2019-03-28 14:04:07 [ndbd] INFO -- Angel connected to '172.16.1.201:1186' 2019-03-28 14:04:07 [ndbd] INFO -- Angel allocated nodeid: 2
回到管理节点查看
-- NDB Cluster -- Management Client -- ndb_mgm> show Connected to Management Server at: 172.16.1.201:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @172.16.1.202 (mysql-5.7.24 ndb-7.5.12, Nodegroup: 0, *) id=3 @172.16.1.203 (mysql-5.7.24 ndb-7.5.12, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @172.16.1.201 (mysql-5.7.24 ndb-7.5.12) [mysqld(API)] 2 node(s) id=4 @172.16.1.203 (mysql-5.7.24 ndb-7.5.12) id=5 @172.16.1.202 (mysql-5.7.24 ndb-7.5.12)
九、检查同步状态
在一台上面创建数据库,看另一台是否被同步,然后创建表,然后新增删除等等
唯一需要注意的是,创建表的时候必须选择表的引擎为NDBCLUSTER,否则表不会进行同步
如果使用sql创建表,命令为:
CREATE TABLE tablename (age INT) ENGINE=NDBCLUSTER
十、启动和关闭
启动mysql集群,启动顺序为:管理节点→数据节点→SQL节点 启动命令常用的可以复制到/usr/local 关闭时只需要关闭管理节点,后面的数据节点会同时被关闭,mysql就和原来一样即可 管理节点关闭命令:ndb_mgm -e shutdown (执行完成之后管理节点会关闭,数据节点也会关闭,但SQL节点不会,也就是数据库服务需要手动到每一台服务器上停止以保证数据同步)