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功能可以提供高可 ...
随机推荐
- C++ STL 之 内建函数对象
STL 内建了一些函数对象.分为:算数类函数对象,关系运算类函数对象,逻辑运算类仿函数.这些仿函数所产生的对象,用法和一般函数完全相同,当然我们还可以产生无名的临时对象来履行函数功能.使用内建函数对象 ...
- C++ STL 之 multimap案例之员工分组
#include <iostream> #include <vector> #include <map> #include <string> #incl ...
- K2 BPM_曾经我也是996的一员_全球领先的工作流引擎
最近关于996的工作模式掀起了新一波讨论热潮.事情源于有人在知名代码托管平台GitHub上,发起了一个名为“996.ICU”的项目,意为“工作996,生病ICU”,以抵制互联网公司的996工作制,项目 ...
- java引用传递,值传递
2个interger的引用对象传给一个swap方法在方法内部进行交换 1.1 java中方法参数传值方式 java中方法传参数都是值传递的,只不过根据参数的类型是引用类型还是非引用类型 引用类型传递的 ...
- JavaScript 的基本使用
JavaScript 基本语法要求: 1.JS的写法是严格区分大小写的. 2.标识符的起名要求跟java的是一样的,第一个位置可以说字母.下划线.美元符号.其他位置可以字母.下划线.美元符号.数字. ...
- Win10系统升级更新方式将会更智能
使用Win10系统的你肯定遇到过在工作时开始自动更新而不得不搁置工作的情况,想必你也已经被Win10系统的自动更新折磨不已,不过这种情况将会马上得到改观. 微软现在已经开始寻找更智能的版本升级更新方式 ...
- 《浏览器工作原理与实践》<04>从输入URL到页面展示,这中间发生了什么?
“在浏览器里,从输入 URL 到页面展示,这中间发生了什么? ”这是一道经典的面试题,能比较全面地考察应聘者知识的掌握程度,其中涉及到了网络.操作系统.Web 等一系列的知识. 在面试应聘者时也必问这 ...
- mybatis详解(三)
一,动态sql,where,trim,set和foreach parameterType的属性可以不用写 xml文件sql的书写 <select id="queryByParams&q ...
- Zookeeper与Kafka Kafka
Zookeeper与Kafka Kafka Kafka SocketServer是基于Java NIO开发的,采用了Reactor的模式(已被大量实践证明非常高效,在Netty和Mina中广泛使用). ...
- vue 自定义指令的魅力
[第1103期]vue 自定义指令的魅力 点点 前端早读课 2017-11-08 前言 很多事情不能做过多的计划,因为计划赶不上变化.今日早读文章由富途@点点翻译分享. 正文从这开始- 在你初次接触一 ...