经过Keepalived搭建MYSQL双主模式的高可用集群系统

经过Keepalived搭建MYSQL双主模式的高可用集群系统前端

一.MYSQL replication介绍:mysql

     MYSQL replication是MYSQL自身提供的一个主从复制功能,就是一台MYSQL服务器(slave)从另一台MYSQL服务器(master)上复制日志,而后解析日志应用到自身的过程。MYSQL replication是单向、异步复制。sql

      MYSQL replication支持链式复制,也就是说slave服务器下还能够再连接slave服务器,同时slave服务器也能够充当master的角色。在MYSQL主从复制中,全部表的更新必须在master服务器上运行,slave服务器仅能提供查询操做。服务器

     优势:网络

     1,增长了MYSQL应用的健壮性,若是master服务器出现问题,能够随时切换到slave服务器,继续提供服务异步

     2,能够将MYSQL读写分离,写操做只在master服务器完成,读操做可在多个slave服务器上完成,因为master服务器和slave服务器是保持数据同步的,所以不会对前端业务系统产生影响。同时,经过读写分离,能够大大下降MYSQL的运行负荷。ide

     3,在网络环境良好,业务量不大的环境中,slave服务器同步数据很快,基本能够实现实时同步,而且,slave服务器在同步过程当中不会干扰master服务器。spa

      MYSQL replication支持多种类型的复制方式,常见的有基于语句的复制,基于行的复制和混合类型的复制。线程

      1,基于语句的复制:日志

       MYSQL默认采用基于语句的复制,效率很高。基本方式是:在master服务器上执行的SQL语句,在slave服务器上再次执行一样的语句。而一旦发现无法精确复制时,会自动选择基于行的复制

      2,基于行的复制:

       基本方式为:把master服务器上改变的内容复制过去,而不是把SQL语句在从服务器执行一遍

      3,混合类型的复制:

        是基于以上两种类型发组合,默认采用基于语句的复制,若是发现基于语句的复制没法精确完成,就会采用基于行的复制

二.MYSQL replication实现原理:

    MYSQL replication是一个从master复制到一台或多台slave的异步过程,在master与slave之间实现整个复制过程主要由三个线程来完成,其中一个IO线程在master端,另两个线程(sql线程和io线程)在slave端

      要实现MYSQL replication,首先在master服务器上打开MYSQL的Binary log(产生二进制日志文件)功能,由于整个复制过程实际上就是slave从master端获取该日志,而后在自身上将二进制文件解析为SQL语句并彻底顺序地执行SQL语句所记录的各类操做。

     详解:

     1,首先slave上的IO线程链接上master,而后请求从指定日志文件的指定位置或者从最开始的日志位置以后的日志内容

     2,master在接收到来自slave的IO线程请求后,经过自身的IO线程,根据请求信息读取指定日志位置以后的日志信息,并返回给slave端的IO线程,返回信息中除了日志所包含的信息以外,还包括这次返回的信息在master端对应的binary log文件的名称和binary log中的位置

     3,slave的IO线程接收到信息后,将获取到的日志内容一次写入slave端的relay log文件(相似mysql-relay-bin.xxxxx)的最后,而且将读取到的master端的binary log的文件名和位置记录到一个名为master-info的文件中,以便在下一次读取的时候可以迅速定位开始日后读取日志信息的位置

     4,slave的SQL线程在检测到relay log文件中新增长了内容后,会立刻解析该relay log文件中的内容,将日志内容解析为sql语句,而后在自身执行这些sql,因为是在master和slave端执行了一样的sql操做,因此两端的数据是彻底同样的,至此,整个复制过程结束。

相关文章
相关标签/搜索