Mysql主从架构及几种高可用方案-创新互联

一、主从复制 1、主从概念、优点及用途

概念: 主库提供读写操作,从库对外提供读操作。

发展壮大离不开广大客户长期以来的信赖与支持,我们将始终秉承“诚信为本、服务至上”的服务理念,坚持“二合一”的优良服务模式,真诚服务每家企业,认真做好每个细节,不断完善自我,成就企业,实现共赢。行业涉及橡塑保温等,在成都网站建设成都全网营销推广、WAP手机网站、VI设计、软件开发等项目上具有丰富的设计经验。


2、主从复制的原理

主从复制:涉及到

 2个日志(binlog、relaylog日志)、

 3个线程:master(dump线程)、slave(I/O线程、SQL线程)

主dump线程:数据库中数据更新时,创建一个dump线程通知slave有数据更新,传给slave的IO线程(binlog和更新位置传给slave I/O 线程)

I/O线程:接收到dump线程发来的 binlog文件,存放到本地relay log中

sql线程:读取relay log中的内容,本地做redo操作,将主库事件本地执行一遍,最终保证主从数据的一致性

3、基本过程:

1、主库写入数据并且生成binlog文件,即MySQL将事务串行的写入二进制日志

2、master通知存储引擎提交事务

3、从服务器IO线程连接至master,请求binlog 指定位置读取到从库

4、主服务器接收到请求,会根据slave请求信息分批读取binlog文件,返回给从库IO线程

5、IO线程获取到maser的日志内容、文件、问之后,会将binlog写到slave自身的relay log中。

6、从服务器中SQL 监测到本地Relay Log中新增了日志内容,翻译成SQL 执行,并更新从库数据

优点:

  1、故障转移-高可用  主服务宕机后,可以由从服务切换成为主服务

  2、读写分离   数据库读请求从服务分担(一些查询大请求,仅查从库)

  3、数据安全   数据的热备,后备数据库,避免数据丢失

缺点:

  1、正常情况下,数据也会不能实时同步

2、主从服务,主机挂掉,数据丢失问题(mysql默认异步复制,设置半同步复制)

半同步复制:主库执行完客户端提交的事务后,等待至少一个从库接收并写到relay log中,才返回。等待确认时,默认会等10秒,如果超过10秒没有收到ack,会降级成异步复制。

  3、主库宕机,无法自动切换

  二、高可用方案          2.1 MMM

有一套脚本对集群进行监控和故障转移,需要2个master,通过一个VIP机制保证集群高可用,当主节点故障,vip从原来的主节点漂移到其它节点。

优点:

1、部署简单,不需要额外开发脚本

2、高可用,出现故障自动切换

缺点:

1、故障简单粗暴,容易丢失事务,建议采用半同步复制方式,减少失败的概率

2、社区缺少维护,不支持GTID

适用场景:

1、读写都需要高可用

2、基于binlog复制

2.2 MHA(公司主流使用)

  一个mysql解决方案,通过一套脚本来保证数据库系统的高可用.在宕机的时间内(通常10—30秒内),完成故障切换,部署MHA,可避免主从一致性问题,

 优点:

  1、支持日志点复制、GTID复制

  2、同MMM相比,会尝试从旧的Master中恢复旧的二进制日志,未必每次都能成功

 缺点:

 1、需要自行开发vip转移脚本

 2、只监控Master状态,未监控Slave状态

2.3 MGR

 mysql 5.7.17版本推出的组复制机制,主要是解决传统 异步复制和半同步复制的数据一致性问题

由若干个节点共同组成一个复制组,一个事务提交后,必须经过超过半数节点的决议并通过后,才可以提交。

  优点:

1、基本无延迟,延迟比异步的小很多

2、数据的强一致性,可以保证数据事务不丢失

 缺点:

1、仅支持innodb,且每个表必须提供主键

2、只能用在GTID模式下,且日志格式为row格式

适用场景:

  1、对主从延迟比较敏感
  2、数据强一致的场景

三、主从延迟    延迟的原因:

1、从库性能比主库差

2、从库读耗费大量cpu资源

3、大事务执行(比如 insert ... select ...,产生多条日志,只能等事务提交才可以传输)

4、主库DDl(alter、drop、create )

比如主库增加字段执行很长时间,从库也消耗很多时间

5、锁冲突

从库一些select  ... for update

减少主从延迟:

1、提供从库机器的配置,提供主库写与从读的效率差

 2、优化sql,避免慢sql

 3、降低多线程大事务并发执行的概率

  4、缩短主库与从库服务器的距离,提升端口带宽,减少binlog延时

  5、打开参数配置,设置多个库并行复制

 

1、开启mysql并行复制
设置slave_parallel_workers >0
   
2、 slave_parallel_type = LOGICAL_CLOCK 基于组提交的并行复制
                          DATABASE      ..  库...

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文题目:Mysql主从架构及几种高可用方案-创新互联
分享链接:http://myzitong.com/article/dgjddc.html