分享MYSQL中的各种高可用技术(源自姜承尧大牛)

摘要:
MySQL高可用性各种技术的比较数据库的可靠性指的是可靠的数据数据库的可用性指的是数据库服务的可用性可靠的数据:例如,ICBC,唯一不能丢失数据的是服务:服务器不能停机。灵活使用MYSQL的各种高可用性技术,以实现以下高可用性要求:MYSQL复制技术99.99%:MYSQL NDB集群和虚拟化技术99.99%;无共享架构GEO-replication和NDB集群技术99.999%GlusterGeo复制?在这种情况下,镜像和原理的数据是同步的。但是,由于所有事务都需要确认镜像,因此性能可能会受到影响。
mysql高可用各个技术的比较

数据库的可靠指的是数据可靠 

数据库可用指的是数据库服务可用

可靠的是数据:例如工商银行,数据不能丢失

可用的是服务:服务器不能宕机

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第1张

灵活运用MYSQL的各种高可用技术来达到下面各种级别的高可用要求

要达到99.9%:使用MYSQL复制技术

要达到99.99%:使用MYSQL NDB 集群和虚拟化技术

要达到99.999%:使用shared-nothing架构的GEO-REPLICATION和NDB集群技术

Gluster Geo-replication是什麼?

Gluster Geo-replication(简称geo-replication)是一种异地灾备技术,

它主要应用于把集群中的一个存储,近乎即时地(near real-time)透过公网(wan)备份到远端的机房

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第2张

各种高可用级别允许的宕机时间

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第3张

DRBD:网络磁盘的RAID1

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第4张


方案一:MYSQL主从复制(单活)

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第5张

投票选举机制,较复杂

MySQL本身没有提供replication failover的解决方案,自动切换需要依赖MHA脚本

可以有多台从库,从库可以做报表和备份

 分享MYSQL中的各种高可用技术(源自姜承尧大牛)第6张


方案二:双主(单活),failover比单主简单

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第7张

同样,自动切换需要MMM脚本

缺点是某个主挂掉了,他下面的slave同样挂掉

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第8张


方案三:双主配SAN存储(单活)

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第9张

这个架构跟方案二是一样的,只不过两个master之间不需要同步数据,因为他们用的是共享磁盘

这个方案是有钱人方案,无论哪个主挂掉都不会引起其他的slave挂掉,但是SAN存储死贵。。

像通信行业中国联通这些公司有用到

某个主挂掉了,下面的slave不会挂掉

注意:failover之后不会预热,数据没有预先加载到内存中,切换之后一段时间内存储会有一定的性能影响

 分享MYSQL中的各种高可用技术(源自姜承尧大牛)第10张


方案四:DRBD 双主配DRBD (单活)

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第11张

结构跟方案三一样,唯一不同的是没有使用SAN网络存储 ,而是使用local disk

由于是实时复制磁盘数据,性能会有影响

人们把DRBD称为“屌丝的SAN”

POOR MAN'S SAN:穷人的SAN

 分享MYSQL中的各种高可用技术(源自姜承尧大牛)第12张


方案五:NDB CLUSTER

 分享MYSQL中的各种高可用技术(源自姜承尧大牛)第13张

国内用NDB集群的公司非常少,貌似有些银行有用

NDB集群不需要依赖第三方组件,全部都使用官方组件,能保证数据的一致性

某个数据节点挂掉,其他数据节点依然可以提供服务

管理节点需要做冗余以防挂掉

缺点是:管理和配置都很复杂,而且某些SQL语句例如join语句需要避免

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第14张

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第15张


方案六:第三方的Tungsten软件

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第16张

使用java编写,不是MYSQL内置的

同样是MYSQL数据库复制,不过他不是用MYSQL内置的组件来做的

不但支持MYSQL数据库复制也支持异构数据库的复制,而且对异构数据库复制支持较好,例如MYSQL复制到ORACLE


方案七:网易的INNOSQL

类似于SQLSERVER的镜像高安全模式

High Safety 模式 (也就是同步模式)没有 witness服务器

数据库在Principle的事务,需要马上得到mirror的确认,才能完成。这种情况下,Mirror和Principle的数据是同步的。

但是因为所有的事务需要mirror的确认,所以性能可能会有所影响。

区别:innosql的slave可以读,镜像的slave(从库)不可读

保证数据不会丢失,数据的高可靠性

mysql5.7开始支持这种模式

分享MYSQL中的各种高可用技术(源自姜承尧大牛)第17张


总结

每种方案都有不同的特点,配置和应用场景也各有不同

有些偏向于成本低的,有些偏向于成本高的,有些偏向于数据的可靠性,有些则偏向于数据库的可用性

反正各个方案都各有优缺点,DBA要结合自己公司的业务情况进行选择合适自己业务情况的高可用方案

更多参考资料:

读写分离:Amoeba

Ubuntu10下MySQL搭建Amoeba系列(文章索引)

集群技术:数据库集群技术漫谈

Gluster Geo-replication工作原理

免责声明:文章转载自《分享MYSQL中的各种高可用技术(源自姜承尧大牛)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Kubernetes监控etcd集群(自带metrics接口)Neety的基础使用及说明下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQL server的高可用

SQL server 2012实现数据库中的表同步到局域网中的另外一个服务器上的数据库的方法: 1、发布、订阅功能 2、AlwayOn功能(最稳定、最优的方案) 3、修改程序,写两份数据,或者用触发器 AlwayOn可用性组是sqlserver中提供的全新功能,确保了应用程序数据的可用性,实现零数据丢失,AlwayOn可用性组技术融合了数据库集群和数据库镜...

docker初识docker安装、基于docker安装mysql及tomcat、基本命令

一.docker是什么 用go语言开发,开源的应用容器引擎,容器性能开销极低 二.整体架构图 Docker 包括三个基本概念: 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。 容器(Conta...

SQL Serve——版本

SQL Server查看版本 步骤一,打开SQL Server Mangement Studio,新建查询。 步骤二,输入select @@version。 FAQ 1.在我们使用别人导出的数据库的时候,有时候我们会通过附加数据库的方法,把别人导出的数据库附加到我们的电脑中,这时,或许你会遇到这种问题,附加时,提示版本为XXX,无法打开,支持AAA版本。...

分布式监控系统之Zabbix proxy

  前文我们了解了zabbix 使用snmp和jmx信道采集数据的相关使用配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14029864.html;今天我们来说zabbix proxy;   1、zabbix proxy是什么?为什么要使用zabbix proxy?   简单讲zabbix proxy就是zab...

CentOS6.5 mysql 5.5安装

  CentOS 6 mysql5.5安装配置 1 安装所需软件 2 安装cmake 3 tar.gz形式安装mysql 4 配置与启动 MySQL自5.5版本以后,就开始使用cmake编译工具了。tar.gz形式安装 mysql5.5 tar.gz 编译要很久 但是最适合自己的需求 存放在定义的目录结构,MySQL 我安装的版本5.5.51。 1 安装所...

mysql常用语句、命令(增删改查功能)

修改数据库的字符集mysql>use mydbmysql>alter database mydb character set utf8;创建数据库指定数据库的字符集mysql>create database mydb character set utf8; 查看database的字符集! show variables like 'coll...