MySQL常见架构介绍 MHA-MGR-InnoDB Cluster-MySQL分布式
Posted 阿令_DBA
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL常见架构介绍 MHA-MGR-InnoDB Cluster-MySQL分布式相关的知识,希望对你有一定的参考价值。
目录
概述:
在学习mysql高可用架构中,本人一直云里雾里,在学习的姜老师的相关材料后总结了一下。本文主要介绍MySQL中常用的高可用架构MHA、MGR、InnoDB Cluster优缺点以及各自使用场景,同时也介绍了MySQL分布式这块方案以及推荐的使用场景
MHA
介绍:开源的MySQL高可用套件之一 ,为MySQL 提供自动的failover 的功能,由两大组件组成 MHA Manager ,MHA Node
组件功能:
Manager:总控服务器,判断高可用组是否可用,并通过执行Node节点商的脚本进行切换
Node:部署在各个node节点伤
原理:采用SSH的方式进行通信,必然存在安全问题,同时ssh的效率也不是很高,所以一般部署不会超过20台机器,用于中小型项目
MGR
介绍:不单单是数据同步技术,应该是高可用解决方案,适用于一致性要求较高的金融场景;
MGR的同步并没有采用复制技术,而是采用GCS(Group Communication System) 协议的日志同步技术,类似于paxos算法协议要求组中的大部分几点都接受到日志,才能完成提交,集群中的节点数要求基数;
虽然前面提到的无损半同步也可以保证主从的数据一致性,但是GCS具有更好的性能,当启用MGR插件的时候,开启新的端口用于数据同步
两种模式:
- 单主模式
- 多主模式
注意:单主模式下MGR可以进行自动的Failover切换,不用以来外部的各种高可用套件
缺点:
- 仅支持 innodb表,并且每张表一定要有主键
- 目前MGR最多支持9节点
- 有一个几点不稳定,会影响集群的性能
注意第三点,和复制不一样的是,由于 MGR 使用的是 Paxos 协议,对于网络极其敏感,如果其中一个节点网络变慢,则会影响整个集群性能。而半同步复制,比如 ACK 为1,则 1 个节点网络出现问题,不影响整个集群的性能。所以,在决定使用 MGR 后,切记一定要严格保障网络的质量。
InnoDB Cluster
介绍:MGR是基于Paxos算法进行数据同步,将数据库状态以及日志同步到各个节点,但是如果要实现一个完整的高可用介乎方案,就需要更高一级 Innodb Cluster来实现
组成:
- MGR集群
- MySQL Shell
- MySQL Router
InnoDB Cluster 底层是 MGR,通过类 Paoxs 算法进行数据同步,性能更好,且能保证数据的完整性。结合管理工具 MySQL Shell,路由工具 MySQL Router 能构建一个完整的 MySQL 高可用解决方案。
分布式数据库:
定义:就是将数据分布在不同物理位置的shu
一般组成:
- 计算层:数据访问权限检查,路由访问以及计算结果等操作
- 元数据管理:记录了存储节点的信息,解析SQL和路由的工作
- 存储层:存放数据
分布式数据库也存在缺点:正因为数据被打散了,分布式数据库会引入很多新问题,比如自增实现、索引设计、分布式事务等
分布式MySQL
介绍:
MySQL的分布式中,常见两种方法,第一种分库分表,第二种采用分布式中间件
分库分表设计:
分库分表: 明确数据库表的分片逻辑了,业务直接就可以访问了,在业务层面实现数据的访问。如下:
优点:与单实例的操作相同,只是多了一层分片的操作
缺点:业务需要感知分片的变化,如果分片改变,或者扩容,那么业务需要该种很大
分布式中间件
分布式中间件:遵循MySQL协议,业务直接访问MySQL分布式中间,
数据路由以及分布式事务的实现操作全部交由中间件完成;所以分布式中间件是关键核心组件。
业界比较知名的分布式中间件产品:ShardingShpere,DBLE,TDSQL等
优点:对于业务层无感,对于后续扩容变更管理更加方便
缺点:多了中间件一层,单个事务的耗时肯定会增加,对于高性能的系统也不支持
如何选择:
对于较小的业务(tps不超过1000的业务)建议选择数据库中间件访问分布式数据库比较优,通常业务处于爬升期,开发人员专注业务的开发
海量的事务,追求性能,直接连接(支付宝、阿里采用直连的方式)
参考资料:
https://kaiwu.lagou.com/course/courseInfo.htm?courseId=869#/detail/pc?id=7341
https://kaiwu.lagou.com/course/courseInfo.htm?courseId=869#/detail/pc?id=7335
https://kaiwu.lagou.com/course/courseInfo.htm?courseId=869#/detail/pc?id=7336
以上是关于MySQL常见架构介绍 MHA-MGR-InnoDB Cluster-MySQL分布式的主要内容,如果未能解决你的问题,请参考以下文章
MySQL常见架构介绍 MHA-MGR-InnoDB Cluster-MySQL分布式
MySQL常见架构介绍 MHA-MGR-InnoDB Cluster-MySQL分布式