MySQL集群概述和安装环境

MySQL Cluster是MySQL适合于分布式计算环境的高实用、高冗余版本.Cluster的汉语是“集群”的意思.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器.

MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster .通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求.此外,由于每个组件有自己的内存和磁盘,不存在单点故障.

mysql 集群架构

上图是mysql的一种常见集群

SQL节点: 给上层应用层提供sql访问.

管理节点(MGM): 管理整个集群. 启动,关闭集群. 通过ndb_mgmd命令启动集群

存储/数据节点: 保存cluster中的数据.

数据节点,可以提供副本.实现数据冗余.

NDB引擎:是一种 “内存中”的存储引擎 ,它具有可用性高和数据一致性好的特点.

拓展:NDB引擎介绍

NDB引擎

MySQL Cluster 使用了一个专用的基于内存的存储引擎——NDB引擎,这样做的好处是速度快, 没有磁盘I/O的瓶颈,但是由于是基于内存的,所以数据库的规模受系统总内存的限制, 如果运行NDB的MySQL服务器一定要内存够大,比如4G, 8G, 甚至16G.NDB引擎是分布式的,它可以配置在多台服务器上来实现数据的可靠性和扩展性,理论上 通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题.

缺陷

·基于内存,数据库的规模受集群总内存的大小限制

·基于内存,断电后数据可能会有数据丢失,这点还需要通过测试验证.

·多个节点通过网络实现通讯和数据同步、查询等操作,因此整体性受网络速度影响,因此速度也比较慢

优点

·多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案.

·扩展性很好,增加节点即可实现数据库集群的扩展.

·冗余性很好,多个节点上都有完整的数据库数据,因此任何一个节点宕机都不会造成服务中断.

Mysql cluster的下载地址:http://dev.mysql.com/downloads/cluster/

在我们做的实验中mysql cluster集群各机器角色如下分配:

mysql管理结点:xiaogan63.cn   IP:192.168.31.63

mysql 数据结点:xiaogan63.cn   IP:192.168.31.63

mysql 数据结点:xiaogan64.cn   IP:192.168.31.64

msyql SQL结点:xiaogan63.cn   IP:192.168.31.63

msyql SQL结点:xiaogan64.cn   IP:192.168.31.64

将MySQL-Cluster-gpl-7.4.13-1.el6.x86_64.rpm-bundle.tar

上传到xiaogan63和xiaogan64上.

实战:MySQL集群搭建

环境清理以及安装

xiaogan63和xiaogan64上执行下面内容:

首先我们要清除旧版本,然后安装mysql cluster,最后是文件权限管理.

1.mysql旧版本清除

首先使用如下命令来清理之前操作系统自带的mysql安装:

yum -y remove mysql

然后使用如下命令:

rpm -qa | grep mysql*

对于找到的2个剩余mysql包,请按照如下的命令格式予以删除:

rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64

2.mysql cluster版本安装准备

将MySQL-Cluster-gpl-7.4.13-1.el6.x86_64.rpm-bundle.tar放到某个目录下(譬如/package) 下面,并且执行如下命令解压:

tar -xf MySQL-Cluster-gpl-7.4.13-1.el6.x86_64.rpm-bundle.tar

# 当前时间不能晚于下载文件的时间,不然会报错

# 避免报错,可以先用ntpdate 同步下时间

# ntpdate time.windows.com

# rpm -ivh /mnt/Packages/ntpdate-*

得到如下文件清单:

MySQL-Cluster-client-gpl-7.4.13-1.el6.x86_64.rpm

MySQL-Cluster-devel-gpl-7.4.13-1.el6.x86_64.rpm

MySQL-Cluster-embedded-gpl-7.4.13-1.el6.x86_64.rpm

MySQL-Cluster-gpl-7.4.13-1.el6.x86_64.rpm-bundle.tar

MySQL-Cluster-server-gpl-7.4.13-1.el6.x86_64.rpm

MySQL-Cluster-shared-compat-gpl-7.4.13-1.el6.x86_64.rpm

MySQL-Cluster-shared-gpl-7.4.13-1.el6.x86_64.rpm

MySQL-Cluster-test-gpl-7.4.13-1.el6.x86_64.rpm

3.创建文件夹

(分如下4个类来创建对应的文件夹)

数据结点存放数据:mkdir /var/lib/mysql

管理节点:mkdir /var/lib/mysql-cluster  SQL节点:可不用 文件夹授权

进程DIR:    mkdir /var/run/mysqld 

管理结点运行目录: /usr/mysql-cluster

使用如下的命令来变更权限保证可写入:

[root@xiaogan63 ~]# useradd -M -s /sbin/nologin mysql

[root@xiaogan63 ~]# chown mysql:mysql -R /var/lib/mysql

[root@xiaogan63 ~]# chown mysql:mysql -R /var/lib/mysql-cluster/

[root@xiaogan63 ~]# chown mysql:mysql -R /var/run/mysqld/

[root@xiaogan63 ~]# chown mysql:mysql -R /usr/mysqld-cluster/

# 64中不需要创建/usr/mysqld-cluster

4.安装mysql集群软件包(客户端)

rpm -ivh MySQL-Cluster-server-gpl-7.4.13-1.el6.x86_64. rpm

rpm -ivh MySQL-Cluster-client-gpl-7.4.13-1.el6.x86_64. rpm

注意:MySQL-Cluster-server和MySQL-Cluster-client 的关系和mysql-server同mysql 包的关系一样.数据结点存放数据: /var/lib/mysql  会自动创建.

会生成两个主要的命令文件:ndb_mgmd 和ndb_mgm

[root@xiaogan63 ~]# which ndb_mgm

/usr/bin/ndb_mgm

[root@xiaogan63 ~]# rpm -qf /usr/bin/ndb_mgm

MySQL-Cluster-server-gpl-7.4.13-1.el6.x86_64

[root@xiaogan63 ~]# which ndb_mgmd

/usr/sbin/ndb_mgmd

[root@xiaogan63 ~]# rpm -qf /usr/sbin/ndb_mgmd

MySQL-Cluster-server-gpl-7.4.13-1.el6.x86_64

注意:当安装完毕MySQL-Cluster-server-gpl包后,将出现如下提示信息,提醒我们整个cluster安装后的初次超级账户密码存在/root/.mysql_secret这个文件当中.

---------------------------------------------------------------------------------------------------------

5.查看mysql root用户密码

[root@xiaogan64 ~]# cat /root/.mysql_secret

# The random password set for the root user at Wed Apr  1 21:10:53 2015 (local time): NSblG9hMkThTgFHY

搭建mysql集群

经过复杂的初始配置,我们终于要搭建集群了.我们按配置,启动,测试的顺序来整理这一部分.

各个机器上的配置

我们先将需求配置到各台机器上

1.xiaogan63创建管理结点上配置文件

[root@xiaogan63 ~]# cd /var/lib/mysql-cluster

[root@xiaogan63 mysql-cluster]# vi config.ini   #写入以下内容

[ndbd default]

NoOfReplicas=2 #数据写入数量.2表示两份

DataMemory=200M

IndexMemory=100M #索引给100M

[ndb_mgmd]

id=1

datadir=/var/lib/mysql-cluster # 管理结点的日志

HostName=192.168.31.63 #管理结点的IP地址.本机IP

###### data node options: #存储结点

[ndbd]

HostName=192.168.31.63

DataDir=/var/lib/mysql #mysql数据存储路径

id=2

[ndbd]

HostName=192.168.31.64

DataDir=/var/lib/mysql #mysql数据存储路径

id=3

# SQL node options: #关于SQL结点

[mysqld]

HostName=192.168.31.63

id=4

[mysqld]

HostName=192.168.31.64

id=5

在这个文件里,我们分别给五个节点分配了ID,这有利于更好的管理和区分各个节点.当然,要是不指定,MySQL也会动态分配一个

2.xiaogan63数据节点+SQL节点配置文档

[root@xiaogan63 /]# vim  /etc/my.cnf #写入以下内容

[mysqld]

datadir=/var/lib/mysql #mysql数据存储路径

# 注:如果xiaogan63 只做 SQL节点,则配置文档 没有datadir这一项

# 说明:数据节点和SQL结点配置文件区别 ,就多一行

# 数据结点有:datadir=/var/lib/mysql#mysql数据存储路径.

# SQL节点上没有.

ndbcluster      #启动ndb引擎

ndb-connectstring=192.168.31.63 # 管理节点IP地址

[mysqld_safe] 

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[mysql_cluster]

ndb-connectstring=192.168.31.63 #管理节点IP地址

3.xiaogan64配置数据结点和SQL结点

[root@xiaogan63 ~]# scp /etc/my.cnf 192.168.31.64:/etc/

注意:xiaogan63和xiaogan64的/my.cnf的内容一样,可直接从xiaogan63复制过去

MySQL Cluster启动

初次启动命令以及用户密码更改调整:(请严格按照次序启动)

先启动:管理结点服务->数据结点服务->sql结点服务

关闭:关闭管理结点服务,关闭管理结点服务后,nbdb数据结点服务会自动关闭->手动把sql结点服务关了.

执行初次启动前请先确认

将两台机器的防火墙关闭(service iptables stop 或者 设定 防火墙端口可通,两个端口即通讯端口1186、数据端口3306 )

1.xiaogan63上启动管理结点命令

ndb_mgmd -f /var/lib/mysql-cluster/config.ini

# mysql cluster 后台运行进程

#尽量不要把 管理结点、数据结点、存储结点 配置在同一台机子上,否则一个挂了,就全挂了.

查看端口号:

2.xiaogan63和xiaogan 64启动数据结点服务

[root@xiaogan63 ~]# ndbd --initial

2016-10-23 11:58:48 [ndbd] INFO     -- Angel connected to '192.168.31.63:1186'

2016-10-23 11:58:48 [ndbd] INFO     -- Angel allocated nodeid: 2 [root@xiaogan64 ~]# ndbd --initial

2016-10-23 11:58:59 [ndbd] INFO     -- Angel connected to '192.168.31.63:1186'

2016-10-23 11:58:59 [ndbd] INFO     -- Angel allocated nodeid: 3

3.xiaogan63和xiaogan64启动SQL结点服务

[root@xiaogan63 ~]#mysqld_safe --defaults-file=/etc/my.cnf  &

[root@xiaogan64 ~]#mysqld_safe --defaults-file=/etc/my.cnf  &

查看mysql 集群状态:

[root@xiaogan63 ~]#ndb_mgm

数据同步

1.xiaogan63 修改root密码:

[root@xiaogan63 /]# cat /root/.mysql_secret

[root@xiaogan63 /]# mysql -uroot -pHV6Isr1WnotQxADc

mysql> set password=password('123456');

[root@xiaogan63 /]# mysql -uroot -p123456

2.xiaogan64 修改root密码:

[root@xiaogan64 ~]# cat /root/.mysql_secret

[root@xiaogan64 ~]# mysql_secure_installation

Enter current password for root (enter for none):

Change the root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Remove anonymous users? [Y/n] y

Disallow root login remotely? [Y/n] y

Remove test database and access to it? [Y/n] y

Reload privilege tables now? [Y/n] y

[root@xiaogan64 ~]# mysql -uroot -p123456

3.插入数据:

xiaogan63:

mysql> create database xiaogan;

xiaogan64:

mysql> show databases;

关闭服务

关闭mysql集群顺序: 关闭管理节点服务-》 关闭管理节点时,数据结点服务自动关闭 –》 需要手动关闭SQL结点服务

[root@xiaogan63 /] # ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> shutdown

Node 2: Cluster shutdown initiated

Node 3: Cluster shutdown initiated

3 NDB Cluster node(s) have shutdown.

Disconnecting to allow management server to shutdown.

Node 3: Node shutdown completed.

ndb_mgm> exit

ps -axu | grep ndbd #查看不到,说明数据节点已经被关

手动关闭SQL结点服务

xiaogan63上,手动关闭SQL结点服务

[root@xiaogan63 ~]# ps -axu | grep mysql

[root@xiaogan63 ~]# kill -9 7617

[root@xiaogan63 ~]# kill -9 7743

[root@xiaogan63 ~]# ps -axu | grep mysql

xiaogan64上,手动关闭SQL结点服务

[root@xiaogan64 ~]# ps -axu | grep mysql

[root@xiaogan64 ~]# kill -9  5576

[root@xiaogan64 ~]# kill -9  5701

[root@xiaogan64 ~]# ps -axu | grep mysql

总结

再次启动,msyql集群启动:

[root@xiaogan63 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

[root@xiaogan63 ~]# ndbd

[root@xiaogan64 ~]# ndbd

[root@xiaogan63 ~]# mysqld_safe --defaults-file=/etc/my.cnf &

[root@xiaogan64 ~]# mysqld_safe --defaults-file=/etc/my.cnf &

测试:

查看mysql 集群状态:

[root@xiaogan63 /]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

2-20 MySQL集群搭建实现高可用的更多相关文章

  1. EMQ集群搭建实现高可用和负载均衡(百万级设备连接)

    一.EMQ集群搭建实现高可用和负载均衡 架构服务器规划 服务器IP 部署业务 作用 192.168.81.13 EMQTTD EMQ集群 192.168.81.22 EMQTTD EMQ集群 192. ...

  2. Redis操作及集群搭建以及高可用配置

    NoSQL - Redis 缓存技术 Redis功能介绍 数据类型丰富 支持持久化 多种内存分配及回收策略 支持弱事务 支持高可用 支持分布式分片集群 企业缓存产品介绍 Memcached: 优点:高 ...

  3. activeMQ集群搭建及高可用

    三台服务器搭建如下的集群,达到了高可用.也同时达到了负载的目的: /****************************************************************** ...

  4. Hadoop集群搭建-HA高可用(手动切换模式)(四)

    步骤和集群规划 1)保存完全分布式模式配置 2)在full配置的基础上修改为高可用HA 3)第一次启动HA 4)常规启动HA 5)运行wordcount 集群规划: centos虚拟机:node-00 ...

  5. Redis5以上版本伪集群搭建(高可用集群模式)

    redis集群需要至少要三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用一台机器(可以多台机器部署,修改一下ip地 ...

  6. MySQL集群搭建(6)-双主+keepalived高可用

    双主 + keepalived 是一个比较简单的 MySQL 高可用架构,适用于中小 MySQL 集群,今天就说说怎么用 keepalived 做 MySQL 的高可用. 1 概述 1.1 keepa ...

  7. windows+mysql集群搭建-三分钟搞定集群

    注:本文来源:  陈晓婵   <  windows+mysql集群搭建-三分钟搞定集群   > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...

  8. MySQL集群搭建详解

    概述 MySQL Cluster 是MySQL 适合于分布式计算环境的高实用.可拓展.高性能.高冗余版本,其研发设计的初衷就是要满足许多行业里的最严酷应用要求,这些应用中经常要求数据库运行的可靠性要达 ...

  9. MySQL集群搭建方案(PXC)

    服务器快过期了,清一点库存,把运维这块的知识复习下 为什么要搭MySQL集群 技术层面上,传统的单节点数据库,万一宕机了,就凉凉了.容灾性能差.抗并发能力有限,数据量大的时候查询有瓶颈.学习层面上,作 ...

随机推荐

  1. linux服务器---安装samba

    安装samba 1.检测samba是否安装,如果没有,那么可以使用yum来安装.至少需要安装3个软件:samba,samba-client.samba-common [root@localhost p ...

  2. 禁止火狐浏览器缓存input标签方法

    禁止火狐浏览器缓存input标签方法 问题1:在火狐浏览器里,云平台的输入框.选项框.勾选框…填写之后按F5刷新页面,之前填的东西会保留着,其它浏览器不会火狐强制刷新用Ctrl + F5 浏览器自动保 ...

  3. P4555 [国家集训队]最长双回文串

    P4555 [国家集训队]最长双回文串 manacher 用manacher在处理时顺便把以某点开头/结尾的最长回文串的长度也处理掉. 然后枚举. #include<iostream> # ...

  4. 20145105 《Java程序设计》实验二总结

    实验二 Java面向对象程序设计 一. 实验内容: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.多态.建模 初步掌握UML 熟悉S.O.L.I.D原则 了解设计模式 二. 实验步骤 (一 ...

  5. 关于STM32外接4—16MHz晶振主频处理方法

    由于STM32F10x库官方采用的是默认的外接8MHz晶振,因此造成很多用户也采用了8MHz的晶振,但是,8MHz的晶振不是必须的,其他频点的晶振也是可行的,只需要在库中做相应的修改就行.    在论 ...

  6. linux学习笔记《一.烧写篇_android》

    一.菜鸟入门.烧写篇 (1).A8板子烧写程序 (NANDFlash烧写) ①烧写软件: 安装原件 安装后: 应用软件图标 ② 我们首先选中English/中文,切换到中文,然后关掉重启(也可以用英文 ...

  7. windows下如何解决chrome浏览器左下角总提示'Downloading proxy script'的问题

    答:关掉LAN settings中的Automatically detect settings选项和Use automatic configuration script选项,如下图

  8. 获取mips32机器的各数据类型的取值范围

    一.背景: 使用的mips 32bit机器,32bit的vxworks操作系统(各机器带来的范围都不一样,与操作系统也有关联) 二.验证类型的范围: 2.1 unsigned long: void m ...

  9. windows下的gvim和emmet 下载和安装 + "omnifunc is not set" solution?

    注意几个地方: 引导键是ctrl-y, 其他就是实际的操作键了, 如: n下一个插入点, N是上一个插入点(不是p), ctrl-y + i是自动为图片添加宽度和高度尺寸, 要点是要把光标移动到 im ...

  10. HDU 1247 Hat’s Words(字典树)题解

    题意:给一个字符串集,要你给出n个字符串s,使s能被所给字符串集中的两个相加所得(ahat=a+hat) 思路:简单字典树题,注意查询的时候要判断所指next是否为NULL,否则会RE非法访问. 代价 ...