MySQL高可用集群方案
一、Mysql高可用解决方案
方案一:共享存储
一般共享存储采用比较多的是 SAN/NAS 方案。
方案二:操作系统实时数据块复制
这个方案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+Heartbeat)
方案三:主从复制架构
主从复制(一主多从)
MMM架构(双主多从)
MHA架构(多主多从)
方案四:数据库高可用架构
这种方式比较经典的案例包括 MGR(MySQL Group Replication)和 Galera 等,最近业内也有一些类似的尝试,如使用一致性协议算法,自研高可用数据库的架构等。
1.MGR(MySQL Group Replication,MySQL官方开发的一个实现MySQL高可用集群的一个工具。第一个GA版本正式发布于MySQL5.7.17中)
2.Galera
其它方案:MySQL Cluster和PXC
MySQL Cluster(ndb存储引擎,比较复杂,业界并没有大规模使用)
PXC(Percona XtraDB Cluster)
如何选择合适的Mysql集群架构?
MHA看业务规模和需求选择
mysql官方的Mysql Cluster。比较复杂,团队有人、资源充足,可以考虑尝试,貌似用的人不多。
小团队或资源不足或小项目直接建议阿里云、腾讯云

二、部分常见方案的简介
1.Mysql主从架构

2.MHA 架构(Master High Availability Manager and Toolsfor MySQL)
MHA(Master High Availability Manager and Toolsfor MySQL)目前在Mysql高可用方面是一个相对成熟的解决方案。它是日本的一位MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication 环境,目的在于维持Master主库的高可用性。
MHA是基于标准的MySQL复制(异步/半同步)。
MHA是由管理节点(MHA Manager)和数据节点(MHA Node)两部分组成。
MHA Manager可以单独部署在一台独立机器,也可以部署在一台slave上。

3.MMM 架构(Master-Master replication manager for Mysql)
MMM,全称为Master-Master replication manager for Mysql,是一套支持双主故障切换和双主日常管理的脚本程序,MMM使用Perl语言开发。主要用来监控和管理MySQL Master-Master(双)复制。特别适合DBA做维护等需要主从复制的场景,通过双主架构避免了重复搭建从库的麻烦。虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时备选主的预热。
(MMM好像不靠谱,据说不稳定,但还是有人在用)

MMM优缺点
优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。
缺点:Monitor节点是单点,可以结合Keepalived实现高可用。
4.DRBD 架构(MySQL+DRBD+Heartbeat)
官网:https://www.linbit.com/en/drbd-community/drbd-download/
三、读写分离解决方案
- 客户端解决方案(应用层):TDDL、 Sharding-Jdbc (常用shardding-jdbc)
- 中间件解决方案(代理层):mysql proxy、mycat、altas (常用mycat)

客户端解决方案的特点:
优点:
1、程序自动完成,数据源方便管理
2、不需要维护,因为没用中间件
3、理论支持任何数据库 (sql标准)
缺点:
1、增加了开发成本、代码有入侵
2、不能做到动态增加数据源
3、程序员开发完成,运维参与不了。
中间件解决方案的特点:
优点:
1、数据增加了都程序没用任何影响
2、应用层(程序)不需要管数据库方面的事情
3、增加数据源不需要重启程序
缺点:
1、程序依赖中间件,导致切换数据库变的困难
2、增加了proxy 性能下降
3、增加了维护工作、高可用问题。
参考:
MySQL高可用集群方案的更多相关文章
- MySQL高可用集群MHA方案
MySQL高可用集群MHA方案 爱奇艺在用的数据库高可用方案 MHA 是目前比较成熟及流行的 MySQL 高可用解决方案,很多互联网公司正是直接使用或者基于 MHA 的架构进行改造实现 MySQL 的 ...
- Mysql高可用集群环境介绍
MySQL高可用集群环境搭建 01.MySQL高可用环境方案 02.MySQL主从复制原理 03.MySQL主从复制作用 04.在Linux环境上安装MySQL 05.在MySQL集群环境上配置主从复 ...
- Mysql 高可用集群PXC
PXC是percona公司的percona xtraDB cluster,简称PXC.它是基于Galera协议的高可用集群方案.可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可 ...
- 部署MYSQL高可用集群
mysql-day08 部署MYSQL高可用集群 u 集群架构 ...
- activemq+Zookeper高可用集群方案配置
在高并发.对稳定性要求极高的系统中,高可用的是必不可少的,当然ActiveMQ也有自己的集群方案.从ActiveMQ 5.9开始,ActiveMQ的集群实现方式取消了传统的Master-Slave方式 ...
- Mycat节点扩缩容及高可用集群方案
数据迁移与扩容实践: 工具目前从 mycat1.6,准备工作:1.mycat 所在环境安装 mysql 客户端程序. 2.mycat 的 lib 目录下添加 mysql 的 jdbc 驱动包. 3.对 ...
- keepalived+MySQL高可用集群
基于keepalived搭建MySQL的高可用集群 MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Clus ...
- corosync+pacemaker and drbd实现mysql高可用集群
DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD 有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的 ...
- LVS+Heartbeat 高可用集群方案操作记录
之前分别介绍了LVS基础知识和Heartbeat基础知识, 今天这里简单说下LVS+Heartbeat实现高可用web集群方案的操作说明. Heartbeat 项目是 Linux-HA 工程的一个组成 ...
随机推荐
- SQL语句多个字段排序
写在前面的话: 本次迭代,分配的任务有点多啊,好在本妈妈朝10晚6的加班加点.其中一项就是列表展示啊, 展示就展示呗,还要排序.排序也可以,测试时排序字段值为啥都一样啊.结果点一下一个顺序. 就想在第 ...
- 下载vuejs,Hello Vue(vscode)
下载vuejs,Hello Vue(vscode) Hello Vue 下载使用vue.js 动图演示 Vue的基本使用步骤 传送门:https://cn.vuejs.org/v2/guide/in ...
- 前端Node项目发布流程
最近在做前端的发布流程,发布流程的主要实现以下几个方面: 构建:包括JavaScript.css.html等的压缩,以及版本控制,利用md5生成版本号替换文件引用,实现长缓存策略. 发布:输出新版本的 ...
- 红帽虚拟化RHEV3.2创建虚拟机(图文Step by Step)
目录 目录 前言 Install RHEV 创建Data CenterClusterHost 创建存储 创建虚拟机 前言 RHEV3.2的Web管理界面有了很大的改进,更加的简单和便捷,还可以使用中文 ...
- Jvm组成以及调优
Jvm的内存由三部分组成Eden,S0,S1,Old以及Metaspace(JDK1.8之前的Perm区)五部分组成: (图片摘自VisualVM的Visual GC插件) 抽象为三代:新生代(Ede ...
- 调用user32.dll显示其他窗口
/// 该函数设置由不同线程产生的窗口的显示状态 /// </summary> /// <param name="hWnd">窗口句柄</param& ...
- firewalld无法使用解决
一.安装完Python3.6.5后无法使用firewalld解决 解决:需要把/usr/sbin/firewalld./usr/bin/firewall-cmd 的头部内容改为原来的 pyton2.7 ...
- Mybatis使用时 resultMap与resultType、parameterMap与 parameterType的区别
Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与 parameterType的区别在面试的时候被问到的几率非常高,出现的次数到了令人 ...
- 一个很有意思的小游戏:Dig2China
最近通关了一个小游戏,游戏故事是这样的:一个美国小男孩想要去中国,他决定从自家后院往下挖,横穿地心去中国,期间经历了很多次失败.但是,每次尝试都能收获一批钱,用这些钱升级钻地机,调整自己的工具,终于在 ...
- FTP搭建YUM源服务器
一.FTP搭建YUM源服务器 1.服务器 挂载centos镜像[root@localhost ~]#yum install vsftpd[root@localhost ~]#systemctl sta ...