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功能可以提供高可 ...
随机推荐
- 【python+selenium】截取某个元素
一. selenium截图1.selenium提供了几个截取全屏的方法- get_screenshot_as_file(self, filename) --这个方法是获取当前window的截图,出现I ...
- 07_Hive的基本命令_Insert命令
1.将查询结果插入Hive表语法结构: 1.1.基本模式插入: INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol ...
- [Abp vNext微服务实践] - 添加中文语言
简介 abp vNext中提供了多语言功能,默认语言是英文,没有提供中文语言包.在业务开发中,定义权限后需要用中文的备注提供角色选择,本篇将介绍如何在abp vNext中加入中文语言. step1:添 ...
- 关于SendMessage和PostMessage的理解的例子
对于SendMessage 和 PostMessage 平时口头的解释是 SendMessage 发送消息后等待返回, PostMessage 发送消息后立即返回 . 但是这样解释还是不具体,什么叫等 ...
- node监听80端口权限问题
报了这个错误: Error: listen EACCES: permission denied 127.0.0.1:80 at Server.setupListenHandle [as _listen ...
- Circular view path [mydemo]: would dispatch back to the current handler URL [/mydemo] again. Check your ViewResolver setup!
简单创建一个springboot工程 pom.xml <?xml version="1.0" encoding="UTF-8"?><proje ...
- 嵌入式linux修改日期时间
命令格式为: date -s 时间字符串 例如只修改系统的日期,不修改时间(时分秒) date -s 2012-08-02 或只修改时间不修改日期 date -s 10:08:00 当然也可以同时修改 ...
- Java多线程断点下载文件
Java实现断点续传+多线程下载 如下代码所示,每一步都有注解 思路: 通过URL连接到服务器上要下载的文件,得到文件的大小: 算出每条线程下载的开始位置和结束位置,例如,有两条线程下载100Byte ...
- macOS关闭修改扩展名的提示
关闭 defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false; killall Finder 开启 def ...
- Leetcode部分题目整理(Javascript)
3.无重复字符的最长子串 /** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s ...