【转】MYSQL-CLUSTER-7.5搭建数据库集群

阅读目录

前言

当你的业务到达一定的当量,肯定需要一定数量的数据库来负载均衡你的数据库请求,我在之前的博客中已经说明了,如何实现负载均衡,但是还有一个问题就是数据同步,因为负载均衡的前提就是,各个服务器的数据库是数据同步的。在业务量不大的时候,我们会使用主从复制的方法实现服务器数据同步,一主多从或者是双主等,但是虽然进行了读写分离,但是对于读的方法限制还是比较大,所以解决数据同步的问题就是数据库集群的意义。我这里使用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

首先下载mysql cluster,推荐使用下面的镜像,下载速度比官网快一些

http://mirrors.sohu.com/mysql/MySQL-Cluster-7.5/

我下载的版本是mysql-cluster-gpl-7.5.4-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

下面是配置文件,根据自己的需求修改,首先给出官网的默认配置文件,然后给出我的配置文件,根据我修改的修改即可,别的均可不动。

- Hide code

[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2    # Number of replicas
DataMemory=80M    # How much memory to allocate for data storage
IndexMemory=18M   # How much memory to allocate for index storage
                  # For DataMemory and IndexMemory, we have used the
                  # default values. Since the "world" database takes up
                  # only about 500KB, this should be more than enough for
                  # this example NDB Cluster setup.
ServerPort=2202   # This the default value; however, you can use any
                  # port that is free for all the hosts in the cluster
                  # Note1: It is recommended that you do not specify the port
                  # number at all and simply allow the default value to be used
                  # instead
                  # Note2: The port was formerly specified using the PortNumber
                  # TCP parameter; this parameter is no longer available in NDB
                  # Cluster 7.5.

[ndb_mgmd]
# Management process options:
HostName=192.168.0.10           # Hostname or IP address of MGM node
DataDir=/var/lib/mysql-cluster  # Directory for MGM node log files

[ndbd]
# Options for data node "A":
                                # (one [ndbd] section per data node)
HostName=192.168.0.30           # Hostname or IP address
NodeId=2                        # Node ID for this data node
DataDir=/usr/local/mysql/data   # Directory for this data node‘s data files

[ndbd]
# Options for data node "B":
HostName=192.168.0.40           # Hostname or IP address
NodeId=3                        # Node ID for this data node
DataDir=/usr/local/mysql/data   # Directory for this data node‘s data files

[mysqld]
# SQL node options:
HostName=192.168.0.20           # Hostname or IP address
                                # (additional mysqld connections can be
                                # specified for this node for various
                                # purposes such as running ndb_restore)

- Hide code

[ndbd default]
NoOfReplicas=2DataMemory=512M
IndexMemory=18M

[ndb_mgmd]
HostName=192.168.75.129
DataDir=/var/lib/mysql-cluster

[ndbd]
HostName=192.168.75.128
DataDir=/var/lib/mysql-cluster

[ndbd]
HostName=192.168.75.130
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.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

创建链接方便访问

# ln -s /usr/local/mysql-cluster-gpl-7.5.4-linux-glibc2.5-x86_64 /usr/local/mysql

初始化数据库(这里要注意,如果你安装的版本和我的不同,数据库初始化的命令使不同的,很多之前的版本会使用:scripts/mysql_install_db --user=mysql来初始化,这个已经被mysql在新的版本中废弃了,所以需要使用下面的命令安装,如果你需要安装别的版本请参考mysql官网的对应版本的安装命令。)

# cd mysql

# mysqld --initialize

修改权限

# 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

- Hide code

[mysqld]
ndbcluster
ndb-connectstring=192.168.75.129

[mysql_cluster]
ndb-connectstring=192.168.75.129
其中的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 ‘192.168.75.129:1186‘ 
2017-03-06 14:04:07 [ndbd] INFO     -- Angel allocated nodeid: 2

最后当所有的节点配置完成,回到管理节点,使用上述说过的show查看,如下的类似显示,证明已经连接完成

ndb_mgm> show 
Cluster Configuration 
--------------------- 
[ndbd(NDB)]    2 node(s) 
id=2 (not connected, accepting connect from 192.168.75.128) 
id=3    @192.168.75.130  (mysql-5.1.63 ndb-7.1.23, starting, Nodegroup: 0)

[ndb_mgmd(MGM)]    1 node(s) 
id=1    @192.168.75.129  (mysql-5.7.16 ndb-7.5.4)

[mysqld(API)]    2 node(s) 
id=4 (not connected, accepting connect from any host) 
id=5 (not connected, accepting connect from any host)

测试

修改mysql密码统一,修改mysql的访问权限,使外部ip能远程访问mysql

然后创建在一台上面创建数据库,看另一台是否被同步,然后创建表,然后新增删除等等。

唯一需要注意的是,创建表的时候必须选择表的引擎为NDBCLUSTER,否则表不会进行同步

下面是测试的截图

如果使用sql创建表,命令为:CREATE TABLE student (age INT) ENGINE=NDBCLUSTER

启动和关闭

启动mysql集群。启动顺序为:管理节点→数据节点→SQL节点。

启动的命令上面都有,删去--initial即可

关闭时只需要关闭管理节点,后面的数据节点会同时被关闭,mysql就和原来一样即可

管理节点关闭命令:ndb_mgm -e shutdown

总结

1、在实际中需要分开数据节点和sql节点。

2、安装最好参考官网的文档进行配置安装,网上的博客安装的可能为旧版本,命令可能不同,连我自己现在写的不知道你看的时候是不是官网又出了新版本,可能在某些地方进行了改动。

3、配置文件过于简单,还有很多配置会在实际中被使用到,需要参考文档进行添加。

4、架构简单,实验足够,现实远不足。

5、还未测试各种节点断开、服务器停止、数据库服务停止、是否会出现数据异常等等特殊情况,还需要进行考虑。因为一旦数据不同步,想要恢复数据会比较麻烦。

最后给出mysql官网的参考文档:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-installation.html

官网安装步骤可能和我的不同,我尽可能一台弄好再弄另外的,官网有配置和启动进行划分,每台同时进行,所以需要看清楚。

实现集群的方式不止这一种,网上给出了几种方式,这里只做参考:

http://www.2cto.com/database/201504/387166.htm

转载请注明出处:http://www.cnblogs.com/linkstar/p/6510713.html

作者:LinkinStar

时间: 2024-12-09 10:55:46

【转】MYSQL-CLUSTER-7.5搭建数据库集群的相关文章

docker应用-6(mysql+mycat 搭建数据库集群)

上一节,通过使用overlay网络,搭建了跨主机的docker容器集群.下面,在这个跨主机的docker容器集群环境下,搭建mysql 数据库集群. mysql主从自动备份和自动切换 从数据安全性考虑,对数据库的数据进行及时备份非常重要.mysql就提供了主从备份的机制,从数据库会非常及时的将主数据库的操作更新到从库上,从而当主数据库down掉之后,数据不会丢失:同时,也可以通过keepalived等程序来实现主库down掉之后,迅速将数据访问服务切换到从库,从而尽可能维护数据库服务的不间断运行

简单使用Mysql-Cluster-7.5搭建数据库集群

阅读目录 前言 mysql cluster中的几个概念解释 架构图及说明 下载mysql cluster 安装mysql cluster之前 安装配置管理节点 安装配置数据和mysql节点 测试 启动和关闭 总结 |前言 当你的业务到达一定的当量,肯定需要一定数量的数据库来负载均衡你的数据库请求,我在之前的博客中已经说明了,如何实现负载均衡,但是还有一个问题就是数据同步,因为负载均衡的前提就是,各个服务器的数据库是数据同步的.在业务量不大的时候,我们会使用主从复制的方法实现服务器数据同步,一主多

手把手教你用Mysql-Cluster-7.5搭建数据库集群

前言 当你的业务到达一定的当量,肯定需要一定数量的数据库来负载均衡你的数据库请求,我在之前的博客中已经说明了,如何实现负载均衡,但是还有一个问题就是数据同步,因为负载均衡的前提就是,各个服务器的数据库是数据同步的.在业务量不大的时候,我们会使用主从复制的方法实现服务器数据同步,一主多从或者是双主等,但是虽然进行了读写分离,但是对于读的方法限制还是比较大,所以解决数据同步的问题就是数据库集群的意义.我这里使用mysql官网提供的mysql-cluster实现集群.(到文章发布前的最新版本的安装教程

zabbix高可用搭建--数据库集群(2)

一.数据mariadb集群搭建分为两个内容1.负载均衡搭建2.mariadb galera cluster二.负载均衡搭建负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录.本次采用lvs的DR模式2.1 安装keepalive和lvs安装包yum install -y ##### keepalived 安装k

搭建高可用web和数据库集群

1.项目简介即拓扑图本次设计使用keepalived与lvs搭建一个调度器集群,实现lvs调度器的高可用,当lvs调度器的master宕机后,keepalived会自动切换到backup上.调度后面的web集群,实现web集群的负载均衡,前方调度器会根据lvs算法把服务发给web集群中的主机去响应.在web集群后面搭建数据库集群,数据库设置主主结构,并添加keepalived来实现高可用.具体拓扑图如下: 2.环境准备机器名称 IP配置 服务角色 备注LVS1-master 192.168.4.

CentOS7+MySQL/MariaDB+Galera+HAProxy+Keepalived构建高可用数据库集群

方案优势: Galera能够实现MySQL/MariaDB数据库的主主复制和多主复制等模式,这些复制模式都是同步进行的,同步时间非常短 每一个节点都可以同时写入和读取,当某一节点发生故障时,可自动从集群中自动剔除 HAProxy能提供负载均衡和故障判断等功能解决服务器系统存在的单点故障 Keepalived能提供客户端连接数据库时使用的虚拟IP地址(VIP) 关于HAProxy的负载均衡算法 轮询方式(roundrobin):不适合用于backend为web服务器的情况,因为session.co

【Data Cluster】真机环境下MySQL数据库集群搭建

阅读目录 MySQL Cluster简介 mysql-cluster构造 虚拟机安装centos6.6 mysql-cluster下载 centos6.6搭建环境配置 mysql-cluster安装包导入cent中 集群配置 运行mysql-cluster 常见问题 测试 真机环境下MySQL-Cluster搭建文档  摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔者对此不甚了解,查阅很多资

MyCAT+MySQL 搭建高可用企业级数据库集群

第1章 课程介绍课程介绍1-1 MyCAT导学 试看1-2 课程介绍 第2章 MyCAT入门这一章中,我们将回顾了垂直切分,水平切分,分库分表等基础概念,然后快速回如何安装和启动MyCAT的,介绍如何以打包好的可执行程序的方式来启动MyCAT.以及如何对其相关的启动配置文件进行配置.2-1 章节综述2-2 什么是MyCAT2-3 什么是数据库中间层2-4 MyCAT的主要作用2-5 MyCAT基本元素2-6 MyCAT安装 第3章 MYCAT核心配置详解本章将对MyCAT的常用核心配置文件ser

Centos7安装mariadb galera cluster数据库集群 & 详解

#Galera集群特点 集群之间无延时,同步复制.而master-slave主从异步复制,存在延迟. active-active多主,集群内部服务器都是同时写,必须等所有集群内所有数据库都完成数据写入,才会反馈完成,所以不存在数据丢失的情况. 集群节点自动故障转移,如果集群中单个节点故障,失效节点会自动被清除. 扩展方便,只要将新的节点添加到集群,新节点自动复制数据. #Galera集群原理     #主要通过galera插件保证数据的一致性,该数据复制的过程是可认证的复制,原理如下: #解析