高性能的MySQL集群系统

本文介绍了多种MySQL高可用性解决方案,包括主从复制、MMM、Heartbeat/SAN、Heartbeat/DRBD、MySQL Cluster以及通过Keepalived搭建的双主模式集群。详细讨论了它们的优缺点和适用场景,旨在确保数据一致性和99.999%的SLA。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍一些常用的高可用MySQL高可用性解决方案

1.主从复制解决方案

这是Mysql自带的主从复制解决方案,数据同步采用的方法是Mysql application技术。Mysql applicaion其实就是一个日志的复制过程,有一个主服务器,同时又有一个从服务器从主服务器上拉起二进制日志文件,从服务器将二进制的日志文件解析程sql语句执行,从而保持主服务与从服务器之间的数据一致性。

而对于failover(服务器死机或出现故障时,自动切换到其他备用服务器),则需要手工操作failover,手工将从服务器切换为主服务器 。这种解决方案可以实现90%的SLA.

2. MMM高可用解决方案(Master-Master replication Manager for Mysql)

基于MySQL replication主主复制高可用解决方案,可以实现99%的SLA

3. Heartbeat/SAN高可用解决方案

这是一个基于软硬件的解决方案,在这个方案中处理failover的方式是高可用集群软件Heartbeat,它监控集群中的各个节点的状态,当集群中的节点出现故障时,自动调用其他节点提供服务。

在数据共享方面,通过SAN来共享数据,在正常状态下,集群节点将挂载存储设备进行数据读写,而当集群出现故障时,Heartbeat将通过一个仲裁器来将主节点挂载的存储设备进行释放,然后再备用节点上挂载存储,对外继续提供服务。这种方案可以实现99.99%的SLA,但是存在脑裂的可能性

4. Heartbeat/DRBD高可用解决方案

failover仍使用Heartbear方案,而数据共享方面采用DRBD软件,但同样也存在脑裂问题,这种方案可以实现99.9%的SLA

5 . Mysql cluster高可用解决方案

Mysql Cluster是有一组服务节点构成,每个服务器上运行着多个进程 包括mysql服务器,NDB cluster的数据节点.Mysql Cluste可以达到99.999%的SLA

6.通过Keepalived搭建Mysql双主模式的高可用集群系统

Mysql Replication是Mysql自身提供的一个主从复制功能,其实就是一台Mysql服务器(slave)从另一台Mysql服务器上复制日志,然后解析日志并应用到自身的过程,
Mysql Replication是单向、异步复制
基本复制过程为:Maste服务器将更新写入二进制日志文件。这些日志文件可以发送到Slave服务器进行更新,当一台Slave服务器连接Master服务器时,它从Maste服务器日志读取上一次更新的成功的位置。然后Slave服务器开始接收上一次更新后发生的所有更新,所有更新完成后,将等待主服务器通知新的更新。

Mysql Replication支持链式复制,Slave服务器还可以再链接其他Slave服务器

在Mysql主从复制中,所有表的更新必须在Master服务器上进行,Slave服务器仅支持查询操作。

Mysql replication的优点:

  1. 增加了Mysql应用的健壮性
  2. 可以将Mysql读、写操作分离,写操作只在Master服务器上进行,而读操作在Slave服务器上进行,减少系统负荷。
  3. 网络环境较好时,Slave服务器同步数据较快,基本可以达到实时同步。Slave在同步过程中不会干扰Master服务器

Mysql Replication支持多种形式的复制方式

  1. 基于语句的复制
    Mysql默认采用基于语句的复制,效率高。在Master上执行过的sql语句,在Slave服务器上执行同样的语句。而一旦发现没法精确复制时,则采用基于行的复制
  2. 基于行的复制
    基本方式为:把Mysql服务器上改变的内容直接复制过去,而不是把sql语句执一遍
  3. 混合类型的复制
    两种复制方式的组合,默认采用基于语句的复制,如果基于语句的复制无法精确完,则采用基于行的复制。

Mysql Replication实现原理
Master Replication是从一个Master复制到一台或多台Slave的异步过程,在Maste与Slave的整个复制过程主要有3个进程来完成,其中一个IO进程在Master端,另两个进程在(SQL线程和IO线程)在Slave端

详细的实现过程

  1. 在Master’服务器上打开Mysql 的Binary log(产生二进制日志文件)的功能
  2. Slave的IO进程连接上Master
  3. Master接受到来自Slave的IO线程请求后,通过自身的IO线程,根据请求信息读取指定位置的日志文件,并将其返回给Slave端的IO线程。返回端除了包含日志信息外,还包含MASTER端对应的Binary log文件名称以及在Binary log的位置。
  4. Slave的IO进程接收到消息,将获取的日志文件内容写入Slaver端的Relay log文件。
  5. Slave的SQL线程在Realy log文件新增内容后,马上解析Relay log的内容,并将日志内容转化为Sql语句

Mysql Replication常用架构

Mysql Replication技术有多种实现架构

  1. 一主一从,最常见
  2. 一主多从,一个Master,两个或两个以上Slave,写操作频繁,查询量大
  3. 主主互备,两台Mysql Server互相将对方作为自己的Master和Slave,主要用于写操作要求比较高的环境中,避免单点故障。
  4. 双主多从,两台Mysql Server服务器双主互备,再加多台Slave服务器

Mysql Replication遵循的规则
1. 同一时刻只有一台Master服务器进行写操作
2. 一台Master服务器可以有多台Slave服务器
3. Master服务器和Slave服务器都要保证自己的Server ID一致
4. 一台Slave服务器可以从Master服务器上获取信息,传递给其他Slave服务器。

Mysql主主互备模式架构
设计思路:利用Mysql Replication技术将两台Mysql Server作为互相将对方作为自己的Master和Slave来进行复制,实现高可用架构中的数据同步功能。利用keeapalived实现mysql 的自动failover.
s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值