MySQLMHA集群理论知识

MHA 简介 

• MHA ( Master High Availability )

 – 由日本 DeNA 公司 youshimaton (现就职于 Facebo ok 公司)开发 

– 是一套优秀的作为 MySQL 高可用性环境下故障切换和 主从提升的高可用软件。

 – 目前在 MySQL 高可用方面是一个相对成熟的解决方案 。

 – 在 MySQL 故障切换过程中, MHA 能做到在 0~30 秒 之内自动完成数据库的故障切换操作 

– 并且在进行故障切换的过程中, MHA 能在最大程度上 保证数据的一致性,以达到真正意义上的高可用。

 

MHA 组成 

• MHA Manager (管理节点)

 – 可以单独部署在一台独立的机器上管理多个 master-sl ave 集群,也可以部署在一台 slave 节点上。 

• MHA Node (数据节点) 

– 运行在每台 MySQL 服务器上。

(软件具有两个功能,需要什么功能,就安装什么软件包)

MHA里有两个角色一个是MHA Node(数据节点)另一个是MHA Manager(管理节点)

MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。

##MHA 谁是最接近主库的数据,就让谁接替主库的工作

工作原理:

相较于其它HA软件,MHA的目的在于维持MySQL Replication中Master库的高可用性,其最大特点是可以修复多个Slave之间的差异日志,最终使所有Slave保持数据一致,然后从中选择一个充当新的Master,并将其它Slave指向它。

-从宕机崩溃的master保存二进制日志事件(binlogevents)。

-识别含有最新更新的slave。

-应用差异的中继日志(relay log)到其它slave。

-应用从master保存的二进制日志事件(binlogevents)。

-提升一个slave为新master。

-使其它的slave连接新的master进行复制。

  ##主库挂掉,MHA 选举出新的主库,其他从库把主库的(ip地址)信息,指向新的主库

 一、什么是MySQL集群

 

   MySQL集群是一个无共享的(shared-nothing)、分布式节点架构的存储方案,其目的是提供容错性和高性能。

   数据更新使用读已提交隔离级别(read-committedisolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phasedcommit)保证所有节点都有相同的数据(如果任何一个写操作失败,则更新失败)。

   无共享的对等节点使得某台服务器上的更新操作在其他服务器上立即可见。传播更新使用一种复杂的通信机制,这一机制专用来提供跨网络的高吞吐量。

   通过多个MySQL服务器分配负载,从而最大程序地达到高性能,通过在不同位置存储数据保证高可用性和冗余。

 

三、如何存储数据

1.Mysqlcluster数据节点组内主从同步采用的是同步复制,来保证组内节点数据的一致性。一般通过两阶段提交 协议来实现,一般工作过程如下:

a)Master执行提交语句时,事务被发送到slave,slave开始准备事务的提交。

b)每个slave都要准备事务,然后向master发送OK(或ABORT)消息,表明事务已经准备好(或者无法准备该事务)。

c)Master等待所有Slave发送OK或ABORT消息

      如果Master收到所有 Slave的OK消息,它就会向所有Slave发送提交消息,告诉Slave提交该事务;

      如果Master收到来自任何一个Slave的ABORT消息,它就向所有 Slave发送ABORT消息,告诉Slave去中止事务。

e)每个Slave等待来自Master的OK或ABORT消息。

         如果Slave收到提交请求,它们就会提交事务,并向Master发送事务已提交 的确认;

         如果Slave收到取消请求,它们就会撤销所有改变并释放所占有的资源,从而中止事务,然后向Masterv送事务已中止的确认。

f)      当Master收到来自所有Slave的确认后,就会报告该事务被提交(或中止),然后继续进行下一个事务处理。

由于同步复制一共需要4次消息传递,故mysql  cluster的数据更新速度比单机mysql要慢。所以mysql cluster要求运行在千兆以上的局域网内,节点可以采用双网卡,节点组之间采用直连方式。

 

 

MHA 集群架构

 

MySQLMHA集群理论知识

 

 

MHA 工作过程 

• MHA Manager 会定时探测集群中的 master 节点, 当 master 出现故障时,它可以自动将最新数据的 sl ave 提升为新的 master ,然后将所有其他的 slave 重新指向新的 master 。整个故障转移过程对应用程 序完全透明。 

 

– ( 1 )从宕机崩溃的 master 保存二进制日志事件( binlog event s )

 – ( 2 )识别含有最新更新的 slave 

– ( 3 )应用差异的中继日志( relay log )到其他的 slave 

– ( 4 )应用从 master 保存的二进制日志事件( binlog events ) 

– ( 5 )提升一个 slave 为新的 master ; 

– ( 6 )使其他的 slave 连接新的 master 进行复制;

 

 

IP 规划 角色 

IP 地址 主机名

 Master 数据库服务器 192.168.4.51 master51 

备用 1 master 数据库服务器 192.168.4.52 master52 

备用 2 master 数据库服务器 192.168.4.53 master53 

第 1 台 slave 服务器 192.168.4.54 slave54 

第 2 台 slave 服务器 192.168.4.55 slave55 

Mha_manager 服务器 192.168.4.56 mgm56 

VIP 地址 192.168.4.100

 

相关软件包

  • MHA监控服务器安装:mha4mysql-manager-0.55-1.el5.noarch,mha4mysql-node-0.54-1.el5.noarch
  • 其他主从集群服务器安装:mha4mysql-node-0.54-1.el5.noarch

高可用集群是解决单点故障,并发量高的

解决方法:

分布式数据库、读写分离、高可用负载均衡、增加缓存服务器等等。之前的文章里已经介绍了读写分离的方案了,接下来我将讲解MySQL高可用负载均衡这一方法。

 

其中实现高可用负载均衡的方法有很多,例如LVS+keepalived组合实现、haproxy+keepalived组合实现等等,

 

 

五、MySQL集群的优缺点

优点:

a)  99.999%的高可用性

b)快速的自动失效切换

c)灵活的分布式体系结构,没有单点故障

d)高吞吐量和低延迟

e)可扩展性强,支持在线扩容

缺点:

a)存在很多限制,比如:不支持外键

b)部署、管理、配置很复杂

c)占用磁盘空间大,内存大

d)备份和恢复不方便

e)重启的时候,数据节点将数据load到内存需要很长时间

 

部署安装集群的注意事项:

1.安装之前需要将服务器内的MySQL卸载干净,不然无法正常启动集群。(以及maridb)

2.集群安装过程中,对存储、SQL节点的目录需要将权限赋给mysql用户,而不是root。

3.在部署集群中需要对管理节点、SQL节点、数据节点进行文件配置。

4.在启动管理节点时,如遇到报错可能是/usr/mysql-cluster没有赋予给mysql权限,更改下即可

5.数据节点服务启动可看到指向管理服务器IP地址,看到指定节点数说明正常

6.SQL服务需要启动,不然无法进入数据库。在MySQL Cluster中启动数据库命令为:mysqld_safe --defaults-file=/etc/my.cnf  &。集群赋予的MySQL初始密码为随机生成的乱序,可进入数据库修改

7.我们在正常启动所有节点后对数据的所有增删改操作都会实时同步到其他节点。如果遇到数据不同步、不匹配的情况,需要对集群服务停止后重启。顺序为:先停管理节点,ndbd节点会自动关闭,再停SQL进程,可手动kill。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值