zoukankan      html  css  js  c++  java
  • Mysql MGR + Consul + Consul-template + Haproxy 搭建mysql 高可用集群 (一)

    传统的mysql高可用集群都是建立在mysql主从同步复制基础上的,利用mysql原生的同步技术,搭配集群管理组件,以及对外输出组件,组成一个高可用的mysql集群。

    其中最复杂的部分就是集群异常状态后的集群重构,包括重新选主、重新配置主从同步、异常实例恢复后的再加入等,这部分功能实现起来并不复杂,但对逻辑严谨性要求较高,因此市面上同类产品百花齐放,例如最流行的MHA开源产品,以及各大中小互联网公司都宣布的自研产品。

    mysql同步技术经历了“异步复制” -> “半同步复制” - >“增强半同步复制” 后,在数据一致性保护方面已基本成熟,基于mysql5.7增强半同步技术,实现mysql集群高可用也就变得更安全可靠。

    mysql同时也推出了组复制(MySQL Group Replication,简称MGR)技术,MGR依靠分布式一致性协议(Paxos协议的变体),实现了分布式下数据的最终一致性。简单来说,由若干个节点共同组成一个复制组,当一个事务的提交时,必须经过组内大多数节点(N / 2 + 1)决议并通过,才能最终得以提交。同时MGR支持单主模式和多主模式,单主模式时只有一个节点能够写入,其他节点只读,当主节点异常时,由其他节点重新选出新主 (这个就是本文最依赖的部分);多主模式下,所有节点均可读写,数据库场景下,多主同时读写一看就知道会有很多问题,因此官方建议生产系统使用单主模式。

    MGR也是基于binlog、relaylog,在数据同步的底层实现上没什么不同,因此不用过多担心使用该技术后的数据安全性。

    MGR技术自5.7.17推出,在生产上使用的案例还不是很多,但随着mysql版本的不断更新,使用MGR技术的场景也会越来越多,本文就是在利用MGR的基础上,组合服务发现和端口转发产品,编写简单脚本,最终实现一个mysql高可用集群。

    架构如下:

    物理机三台:

    172.16.0.90 swarm1
    172.16.0.76 swarm2
    172.16.0.175 swarm3

    混合部署模式:

    3节点Mysql MGR集群

    3节点Consul集群

    每节点部署一个Consul-template

    3节点haproxy集群

  • 相关阅读:
    2、容器初探
    3、二叉树:先序,中序,后序循环遍历详解
    Hebbian Learning Rule
    论文笔记 Weakly-Supervised Spatial Context Networks
    在Caffe添加Python layer详细步骤
    论文笔记 Learning to Compare Image Patches via Convolutional Neural Networks
    Deconvolution 反卷积理解
    论文笔记 Feature Pyramid Networks for Object Detection
    Caffe2 初识
    论文笔记 Densely Connected Convolutional Networks
  • 原文地址:https://www.cnblogs.com/qixingyi/p/10282072.html
Copyright © 2011-2022 走看看