MySQL/MariaDB数据库MHA实现高可用实战

      MySQL/MariaDB数据库MHA实现高可用实战

                        作者:尹正杰 

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.MySQL高可用常见的解决方案

1>.Multi-Master Replication Manager for MySQL(简称MMM)

  Mysql主主复制管理器是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的)

  博主推荐阅读:
    http:
//www.mysql-mmm.org     https://code.google.com/archive/p/mysql-master-master/downloads

2>.Master High Availability(简称MHA)

  对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,出于机器成本的考虑,淘宝进行了改造,目前淘宝TMHA已经支持一主一从

  博主推荐阅读:
    https:
//code.google.com/archive/p/mysql-master-ha/

3>.MySQL extended with the Write Set Replication(简称Galera Cluster:wsrep)

  通过wsrep协议在全局实现复制;任何一节点都可读写,不需要主从复制,实现多主读写

4>.Group Replication(简称GR)

  MySQL官方提供的组复制技术(MySQL 5.7.17引入的技术),基于原生复制技术Paxos算法

二.MHA概述

1>.MHA集群架构

  如下图所示:
    MHA是基于perl语言开发的,它需要单独部署到一台服务器上,我们称之为manager。
    MHA可用监控多组主从复制集群(建议使用半同步复制),当任何一组中的master节点宕机,可用迅速该组中的slave节点提升为master,这个过程是自动切换的,无需我们手动切换。

2>.MHA选择master过程

  (1)从宕机崩溃的master保存二进制日志事件(binlog events)
  (2)识别含有最新更新的slave
  (3)应用差异的中继日志(relay log)到其他的slave
  (4)应用从master保存的二进制日志事件(binlog events)
  (5)提升一个slave为新的master
  (6)使其他的slave连接新的master进行复制

3>.MHA的组件

MHA软件由两部分组成,Manager工具包和Node工具包。
  Manager工具包主要包括以下几个工具:
    masterha_check_ssh:
      检查MHA的SSH配置状况     masterha_check_repl:
      检查MySQL复制状况     masterha_manger:
      启动MHA     masterha_check_status:
      检测当前MHA运行状态     masterha_master_monitor:
      检测master是否宕机     masterha_master_switch:
      故障转移(自动或手动)     masterha_conf_host:
      添加或删除配置的server信息   Node工具包:这些工具通常由MHA Manager的脚本触发,无需人为操作)主要包括以下几个工具:     save_binary_logs:
      保存和复制master的二进制日志     apply_diff_relay_logs:
      识别差异的中继日志事件并将其差异的事件应用于其他的slave     filter_mysqlbinlog:
      去除不必要的ROLLBACK事件(MHA已不再使用此工具)     purge_relay_logs:
      清除中继日志(不会阻塞SQL线程)
注意:
  为了尽可能的减少主库硬件损坏宕机造成的数据丢失,因此在配置MHA的同时建议配置成MySQL
5.5版本及以上的半同步复制

4>.自定义扩展

  secondary_check_script: 
    通过多条网络路由检测master的可用性   master_ip_ailover_script:
    更新Application使用的masterip   shutdown_script:
    强制关闭master节点   report_script:
    发送报告   init_conf_load_script:
    加载初始配置参数   master_ip_online_change_script:
    更新master节点ip地址

5>.配置文件

global配置:
  为各application提供默认配置 application配置:
  为每个主从复制集群

三.MHA部署实战

1>.搭建半同步复制

博主推荐阅读:
    https://www.cnblogs.com/yinzhengjie/p/11828475.html

试验环境说明(搭建步骤如上所述,配置文件需要稍作修改):
  node102.yinzhengjie.org.cn:
    master节点
  node103.yinzhengjie.org.cn:
    slave节点
  node104.yinzhengjie.org.cn:
    MHA节点

2>.

3>.

4>.

5>.

猜你喜欢

转载自www.cnblogs.com/yinzhengjie/p/11838998.html