MySQL学习记录 - 高可用架构

MySQL学习记录 - 高可用架构

 

一、数据库复制

1、异步复制(Asynchronous replication)

MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,

这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。

2、全同步复制(Fully synchronous replication)

指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响。

3、半同步复制(Semisynchronous replication)

介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。

相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。

4、异步与半同步异同

默认情况下MySQL的复制是异步的,Master上所有的更新操作写入Binlog之后并不确保所有的更新都被复制到Slave之上。

异步操作虽然效率高,但是在Master/Slave出现问题的时候,存在很高数据不同步的风险,甚至可能丢失数据。

MySQL5.5引入半同步复制功能的目的是为了保证在master出问题的时候,至少有一台Slave的数据是完整的。

在超时的情况下也可以临时转入异步复制,保障业务的正常使用,直到一台salve追赶上之后,继续切换到半同步模式。

 

二、主从复制/主主复制

1、主从复制(单向复制):读写分离、实时备份、故障切换

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。

MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,

数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

 

原理:

(1)master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中; 

(2)slave服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件 

(3)同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,

从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

 

2、主主复制(双向复制):互为主备

 

3、级联复制

 

三、高可用架构

1、双节点

2、一主两从

3、一主多从

4、多主多从

 

四、数据库管理软件

1、MMM

  在MMM(Master-Master replication manager for MySQL)集群中总共提供1个写服务和N(N>=1)个读服务。

每个节点均部署有一个mmm-agent,mmm-mananger和mmm-agent保持通信,agent定期向mananger报告所在节点的MySQL存活情况(实际上就是一个心跳包)。

当mmm-manager连续多次无法收到mmm-agent的心跳消息时,将会判定该节点死亡,并进行故障转移。

 

2、MHA(Master High Availability)

  MHA(MySQL Master High Availability)是一个专门针对MySQL主库的高可用。 

主库发生故障时,MHA会选定一个候选主节点作为新的主节点,并补齐缺少的Binlog。数据补齐后,将写服务转移到新的主节点上。

MHA工作原理

相较于其它HA软件,MHA的目的在于维持MySQL Replication中Master库的高可用性,

其最大特点是可以修复多个Slave之间的差异日志,最终使所有Slave保持数据一致,然后从中选择一个充当新的Master,并将其它Slave指向它。

  • 从宕机崩溃的master保存二进制日志事件(binlogevents)。
  • 识别含有最新更新的slave。
  • 应用差异的中继日志(relay log)到其它slave。
  • 应用从master保存的二进制日志事件(binlogevents)。
  • 提升一个slave为新master。 -使其它的slave连接新的master进行复制。

目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,

一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器。

 

MHA,具体的搭建环境如下:

其中master对外提供写服务,备选master(实际的slave,主机名m3)提供读服务,slave也提供相关的读服务,

一旦master宕机,将会把备选master提升为新的master,slave指向新的master,manager作为管理服务器。

 

 

参考资料

mysql高可用方案

五大常见的MySQL高可用方案

MySQL高可用方案:理论篇

MySQL高可用方案:实践篇

MySQL-MHA高可用方案

MySQL高可用方案MHA的部署和原理

MySQL主从复制与主主复制

mysql主从复制原理

MySQL 的主从复制(高级篇)

posted @ 2021-02-07 16:17  风过无痕521  阅读(55)  评论(0编辑  收藏  举报