简单使用Mysql-Cluster-7.5搭建数据库集群
阅读目录
- 前言
- mysql cluster中的几个概念解释
- 架构图及说明
- 下载mysql cluster
- 安装mysql cluster之前
- 安装配置管理节点
- 安装配置数据和mysql节点
- 测试
- 启动和关闭
- 总结
|前言
当你的业务到达一定的当量,肯定需要一定数量的数据库来负载均衡你的数据库请求,我在之前的博客中已经说明了,如何实现负载均衡,但是还有一个问题就是数据同步,因为负载均衡的前提就是,各个服务器的数据库是数据同步的。在业务量不大的时候,我们会使用主从复制的方法实现服务器数据同步,一主多从或者是双主等,但是虽然进行了读写分离,但是对于读的方法限制还是比较大,所以解决数据同步的问题就是数据库集群的意义。我这里使用mysql官网提供的mysql-cluster实现集群。(到文章发布前的最新版本的安装教程,把网上踩的坑都踩过了一遍;)
|mysql cluster中的几个概念解释
为了简单,我后面简称mysql-cluster为mc。
1、mc已经包含了mysql,我下载的最新的mc7.5,官方说明包含的是mysql版本是5.7。所以不需要使用别的msyql的安装包安装数据库。同时注意mysql5.7的版本在安装的命令和配置上面和之前的版本有很大的不同,所以网上有很多mc7.5之前的版本,所包含的mysql版本不同,所以安装方法不同。
2、管理节点,mc管理节点负责管理、配置、监控整个集群。
3、数据节点,使用内存存放数据,保存进数据节点的数据都会自动复制并存储到其他数据节点。
4、mysql节点,也叫数据库节点,和我们平时使用的mysql相同,作为数据库使用。被数据节点访问。
|架构图及说明

我实验中的配置就是如图所示,因为虚拟机占用内存较大,只使用了3台服务器,在实际情况中最好将数据节点和mysql节点分开。在实际中负载均衡服务还需要做备份,因为万一负载均衡服务器宕机将会导致所有数据节点都无法访问,所以需要对负载均衡服务器备份,有条件的话,分开管理节点和负载均衡器。实验只实现整个数据库集群,负载均衡请参考之前的博客配置即可。
|下载mysql cluster
https://cdn.mysql.com//Downloads/MySQL-Cluster-7.5/mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64.tar.gz
我下载的版本是mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64.tar.gz
注意看清是64位版本的,别下载错了
|安装mysql cluster之前
安装之前,如果之前安装过mysql,那么需要删除相应的各种mysql文件,删除之前请停止mysql服务。并且不要忘记删除my.cnf这些配置文件。确保删除干净。不然可能会和后面的安装有冲突。如果是实验,关闭防火墙,实际中,防火墙打开对应端口。保证服务器之前能互相访问,能ping通。保证固定的ip地址。保证没有别的程序占用需要使用的端口。如3306等。这些都确认完毕后再进行安装。需要linux基础的命令熟练,需要熟练安装mysql基本版本等操作,因为后序的一些操作我会简单描述,不做过多的说明了。
|安装配置管理节点
将下载后的包上传至服务器/usr/local下
解压
# tar xvf mysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64.tar.gz
将需要的文件取出
# cd mysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64
# cp bin/ndb_mgm* /usr/local/bin
# cd /usr/local/bin
# chmod +x ndb_mgm*
新建配置文件并且初始化管理节点
# mkdir /var/lib/mysql-cluster
# mkdir /usr/local/mysql
# vi /var/lib/mysql-cluster/config.ini
(输入“i” 是编辑,按下键盘左上角“Esc”退出编辑,输入 “:wq”为保存。)
下面是配置文件,根据我修改的修改即可,别的均可不动。
[ndbd default]
NoOfReplicas=2
DataMemory=40960M
IndexMemory=512M [ndb_mgmd]
nodeid=1
HostName=10.0.125.87
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
nodeid=2
HostName=10.0.125.84
DataDir=/var/lib/mysql-cluster
[ndbd]
nodeid=21
HostName=10.0.125.86
DataDir=/var/lib/mysql-cluster
[ndbd]
nodeid=22
HostName=10.0.125.85
DataDir=/var/lib/mysql-cluster
[mysqld]
nodeid=31
HostName=10.0.125.86
[mysqld]
nodeid=32
HostName=10.0.125.85
使用配置文件初始化管理节点
# /usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
出现MySQL Cluster Management Server mysql-5.7.16 ndb-7.5.4
然后就能使用ndbd进去管理了
# ndbd
ndb_mgm>show(使用show命令查看管理情况,当数据节点配置完毕之后,我们再用这个命令查看和管理)

到此为止管理节点配置完毕,接下去配置数据和sql节点
|安装配置数据和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下
解压
# tar xvf mysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64.tar.gz
重命名
# mv mysql-cluster-gpl-7.5.6-linux-glibc2.5-x86_64 /usr/local/mysql
初始化数据库(这里要注意,如果你安装的版本和我的不同,数据库初始化的命令使不同的,很多之前的版本会使用:scripts/mysql_install_db --user=mysql来初始化,这个已经被mysql在新的版本中废弃了,所以需要使用下面的命令安装,如果你需要安装别的版本请参考mysql官网的对应版本的安装命令。)
# cd /usr/local/mysql/bin/
# ./mysqld --initialize
接着会生成临时密码:我这生成的是 “o,Z2el6stDh”,这个密码要记住,待会要用到。

修改权限
# cd ..
先返回上一级
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .
# cp support-files/mysql.server /etc/rc.d/init.d/
# chmod +x /etc/rc.d/init.d/mysql.server
# chkconfig --add mysql.server
配置数据节点
# vi /etc/my.cnf
(输入“i” 是编辑,按下键盘左上角“Esc”退出编辑,输入 “:wq”为保存。)
[mysqld]
ndbcluster
ndb-connectstring=10.0.125.87
[mysql_cluster]
ndb-connectstring=10.0.125.87
其中的IP为管理节点的IP
启动集群节点上面的服务启动mysql(成功会有success)
# /etc/init.d/mysql.server start
启动ndbd# /etc/init.d/ndbd --initial如果上述不行使用绝对路径的这个:# /usr/local/mysql/bin/ndbd --initial如果出现下述现象就成功了
2017-03-06 14:04:07 [ndbd] INFO -- Angel connected to '10.0.125.86:1186'
2017-03-06 14:04:07 [ndbd] INFO -- Angel allocated nodeid: 21
最后当所有的节点配置完成,回到管理节点,使用上述说过的show查看,如下的类似显示,证明已经连接完成
#cd /usr/local/bin/
#ndb_mgm
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=21 @10.0.125.86 (mysql-5.7.18 ndb-7.5.6, starting, Nodegroup: 0,*)
id=22 @10.0.125.85 (mysql-5.7.18 ndb-7.5.6, starting, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.0.125.87 (mysql-5.7.18 ndb-7.5.6)
[mysqld(API)] 2 node(s)
id=31 @10.0.125.86 (mysql-5.7.18 ndb-7.5.6)
id=32 @10.0.128.85 (mysql-5.7.18 ndb-7.5.6)
|测试
修改mysql密码统一,修改mysql的访问权限,使外部ip能远程访问mysql
#cd /usr/local/mysql/
#bin/mysql --user=root –p
输入之前保存的临时密码。
然后修改密码
mysql> set password=password('root');
允许客户端远程连接
mysql>grant all privileges on *.* to root@'%' identified by 'root';

然后创建在一台上面创建数据库,看另一台是否被同步,然后创建表,然后新增删除等等。
唯一需要注意的是,创建表的时候必须选择表的引擎为ndbcluster,否则表不会进行同步
下面是测试的截图

|启动和关闭
启动mysql集群。启动顺序为:管理节点→数据节点→SQL节点。
启动的命令上面都有,删去--initial即可
关闭时只需要关闭管理节点,后面的数据节点会同时被关闭,mysql就和原来一样即可
管理节点关闭命令:ndb_mgm -e shutdown
| 描述 | 命令 |
| 停止管理节点 | /usr/local/bin/ndb_mgm -e shutdown |
| 启动管理节点 | /usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini |
| 初始化管理节点启动 | /usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial |
| 启动数据节点 | /usr/local/mysql/bin/ndbd |
| 初始化mysql | ./mysqld --initialize |
| 启动sql节点 | /etc/init.d/mysql.server start |
本文从别人那转载,亲自试验过并对某些地方做了调整:http://www.cnblogs.com/linkstar/p/6510713.html
简单使用Mysql-Cluster-7.5搭建数据库集群的更多相关文章
- docker应用-6(mysql+mycat 搭建数据库集群)
上一节,通过使用overlay网络,搭建了跨主机的docker容器集群.下面,在这个跨主机的docker容器集群环境下,搭建mysql 数据库集群. mysql主从自动备份和自动切换 从数据安全性考虑 ...
- 手把手教你用Mysql-Cluster-7.5搭建数据库集群
前言 当你的业务到达一定的当量,肯定需要一定数量的数据库来负载均衡你的数据库请求,我在之前的博客中已经说明了,如何实现负载均衡,但是还有一个问题就是数据同步,因为负载均衡的前提就是,各个服务器的数据库 ...
- 【转】MYSQL-CLUSTER-7.5搭建数据库集群
阅读目录 前言 mysql cluster中的几个概念解释 架构图及说明 下载mysql cluster 安装mysql cluster之前 安装配置管理节点 安装配置数据和mysql节点 测试 启动 ...
- mycat数据库集群系列之mycat读写分离安装配置
最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考.本次系列终结大概包括以下内容:多数据库安装.mycat部署安装.数据库之读写分离 ...
- 【Data Cluster】真机环境下MySQL数据库集群搭建
真机环境下MySQL-Cluster搭建文档 摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔 ...
- 这次一定要教会你搭建Redis集群和MySQL主从同步(非Docker)
前言 一直都想自己动手搭建一个Redis集群和MySQL的主从同步,当然不是依靠Docker的一键部署(虽然现在企业开发用的最多的是这种方式),所以本文就算是一个教程类文章吧,但在动手搭建之前,会先聊 ...
- CentOS 7 搭建PXC 数据库集群
CentOS 7 搭建PXC 数据库集群 PXC( Percona XtraDB Cluster ) 特点如下: 1.同步复制,事务要么在所有节点提交或不提交,保证了数据的强一致性. 2.多主复制,可 ...
- mycat数据库集群系列之mysql主从同步设置
最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考.本次系列终结大概包括以下内容:多数据库安装.mycat部署安装.数据库之读写分离 ...
- MySQL数据库集群进行正确配置步骤
MySQL数据库集群进行正确配置步骤 2010-06-09 10:47 arrowcat 博客园 字号:T | T 我们今天是要和大家一起分享的是对MySQL数据库集群进行正确配置,我前两天在相关网站 ...
随机推荐
- POJ 1755 Triathlon [半平面交 线性规划]
Triathlon Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6912 Accepted: 1790 Descrip ...
- 帝国CMS备份出现数据恢复不完整的问题
今天linux主机中毒了,把用帝国备份王备份之后,恢复了快照到刚建主机的状态: 哎,只怪当初没有勤快的去做快照啊: 重新配置好后: 开始使用帝国备份王: 数据恢复之后,打开文章,提示"附加表 ...
- 阶段小项目2:显示bin格式图片
#include<stdlib.h>#include<stdio.h>#include<string.h>#include<error.h>#inclu ...
- [Python Study Notes]异常处理
正则表达式 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理 断言(Assertions) python标准异常 ...
- Rsync(远程同步): linux中Rsync命令的实际示例
rsync的 ( 远程同步 )为在Linux / Unix系统局部 拷贝和同步文件和目录远程以及一个最常用的命令. 随着rsync命令的帮助,您可以复制并在目录中远程和本地同步数据,在磁盘和网络,进行 ...
- EF的Join()和Include()差异性教程
在EF中表连接常用的有Join()和Include(),两者都可以实现两张表的连接,但又有所不同. 1.Join(),两表不必含有外键关系,需要代码手动指定连接外键相等(具有可拓展性,除了值相等,还能 ...
- mysql有多条记录的单个字段想存为一个字段显示的方法
SELECT po.id,(SELECT GROUP_CONCAT(mr.member_type) as memberTypeList FROM prod_offer_member_rel mr WH ...
- MySQL暴错注入方法
mysql暴错注入方法整理,通过floor,UpdateXml,ExtractValue,NAME_CONST,Error based Double Query Injection等方法 1.通过fl ...
- 使用Netbeans内置的Git工具
在 NetBeans IDE 中使用 Git 支持 NetBeans IDE 为 Git 版本控制客户端提供支持.通过利用 IDE 的 Git 支持,您可以从 IDE 内的项目中直接执行版本控制任务. ...
- 《android开发艺术探索》读书笔记(十)--Android的消息机制
接上篇<android开发艺术探索>读书笔记(九)--四大组件 No1: 消息队列MessageQueue的内部存储结构并不是真正的队列,而是采用单链表的数据结构来存储消息列表,因为单链表 ...