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节点不会,也就是数据库服务需要手动到每一台服务器上停止以保证数据同步)
MySQL Cluster 集群部署的更多相关文章
- Centos 7 下 Mysql 5.7 Galera Cluster 集群部署
一.介绍 传统架构的使用,一直被人们所诟病,因为MySQL的主从模式,天生的不能完全保证数据一致,很多大公司会花很大人力物力去解决这个问题,而效果却一般,可以说,只能是通过牺牲性能,来获得数据一致性 ...
- centos6下redis cluster集群部署过程
一般来说,redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口,比如:slaveof 192.168.10.10 6379,然后启动主从,主从 ...
- MySQL Cluster 集群
本文转载 http://www.cnblogs.com/gomysql/p/3664783.html MySQL Cluster是一个基于NDB Cluster存储引擎的完整的分布式数据库系统.不仅仅 ...
- Innodb Cluster集群部署配置
目录 一.简介 二.环境声明 三.部署 安装(均操作) 配置(均操作) 开启group_replication(均操作) 启动group_replication 创建集群(在mysql-1执行) 创建 ...
- 2、Redis 底层原理:Cluster 集群部署与详解
Redis 简介 Redis 提供数据缓存服务,内部数据都存在内存中,所以访问速度非常快. 早期,Redis 单应用服务亦能满足企业的需求.之后,业务量的上升,单机的读写能力满足不了业务的需求,技术上 ...
- centos7 mysql cluster集群搭建基于docker
1.准备 mn:集群管理服务器用于管理集群的其他节点.我们可以从管理节点创建和配置集群上的新节点.重新启动.删除或备份节点. db2/db3:这是节点间同步和数据复制的过程发生的层. db4/db5: ...
- 基于Docker的Mysql Cluster集群
参考 mysql-cluster镜像 https://medium.com/@ahmedamedy/mysql-clustering-with-docker-611dc28b8db7 使用Docker ...
- Redis cluster 集群部署和配置
目录 一.集群简介 cluster介绍 cluster原理 cluster特点 应用场景 二.集群部署 环境介绍 节点部署 启动集群 三.集群测试 一.集群简介 cluster介绍 redis clu ...
- Redis5.0.8 Cluster集群部署
目录 一.Redis Cluster简介 二.部署 三.创建主库 一.Redis Cluster简介 Redis Cluster集群是一种去中心化的高可用服务,其内置的sentinel功能可以提供高可 ...
随机推荐
- JS原生实现照片抽奖
HTML表格标记实现九宫格,放入九张图片.利用CSS的滤镜属性控制图片的透明度.Javascript实现抽奖和中奖. 可以做为教师上课,随机抽取回答问题的同学,使学生感受到随机的公平性,简单有趣! 点 ...
- ASE2019 model组 事后诸葛亮会议记录
诸葛亮文档 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 传统编程教育模式下,初学者(主要是刚刚接触编程的学生)往往依靠老师与助教的课堂教学,由 ...
- Spring中事务的传播行为,7种事务的传播行为,数据库事务的隔离级别
Propagation.REQUIRED 代表当前方法支持当前的事务,且与调用者处于同一事务上下文中,回滚统一回滚(如果当前方法是被其他方法调用的时候,且调用者本身即有事务),如果没有事务,则自己新建 ...
- Flutter——Row组件(水平布局组件)
Row组件的常用属性 属性 说明 mainAxisAlignment 主轴的排序方式 crossAxisAlignment 次轴的排序方式 children 组件子元素 import 'package ...
- kafka无法消费数据提示找不到分区
1 原因 自己重建了kafka 但是只有一个分区 以前的offset没有重置,导致了消费的时候 找不到主题分区 手动删除之前的offset数据(mysql自定义配置)
- DOS导出文件夹或文件名
dir /s /w >a.txt 应用dos导出当前目录下的文件夹名称(包括子目录,但是不包括文件,仅仅导出文件夹) dir /s/b/a:d >a.txt
- delphi Tidhttp 发送json格式报文
type TwmsThreadpostJson = class(TThread) private Furl: string; Fpostcmd: string; FResult: string; FB ...
- HAL库 TIM计数器及中断开启过程
1.初始化TIM基本计数器参数 void MX_TIM2_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig = {}; TIM_Master ...
- [转载]pytest学习笔记
pytest学习笔记(三) 接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, ...
- 洛谷P3600随机数生成器——期望+DP
原题链接 写到一半发现写不下去了... 所以orz xyz32768,您去看这篇题解吧,思路很清晰,我之前写的胡言乱语与之差距不啻天渊 #include <algorithm> #incl ...