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

图片和资料来源于MYSQL大牛姜承尧老师(MYSQL技术内幕作者)

姜承尧: 网易杭州研究院 技术经理 主导INNOSQL的开发

mysql高可用各个技术的比较

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

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

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

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

 

 

 

灵活运用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)备份到远端的机房

 

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

DRBD:网络磁盘的RAID1


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

投票选举机制,较复杂

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

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

 


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

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

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


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

 

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

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

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

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

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

 


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

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

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

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

POOR MAN'S SAN:穷人的SAN

 

 

 


方案五:NDB CLUSTER

 

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

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

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

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

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

 


方案六:第三方的Tungsten软件

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

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

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


方案七:网易的INNOSQL

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

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

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

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

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

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

 

mysql5.7开始支持这种模式

 

 


总结

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

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

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

 

更多参考资料:

读写分离:Amoeba

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

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

Gluster Geo-replication工作原理

 

如有不对的地方,欢迎大家拍砖o(∩_∩)o 

转载于:https://www.cnblogs.com/123ing/p/3840126.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php中数据类型、数组排序、循环语句、混编、操作本地文件流程、常用API、函数、魔术常量

php中数据类型: php中有7种数据类型,分别是: //1.String字符串,用引号包裹的字符,如:$str hello word;//2.Integer整型,可以是正数或负数,有十进制、十六进制、八进制,…

J2ME游戏中的图片处理

图片资源乃是游戏的外衣,直接影响一个游戏是否看上去很美。在J2ME游戏开发中,由于受到容量和内存的两重限制,图片使用受到极大的限制。在这种环境中,处理好图片的使用问题就显得更加重要。 本文从容量和内存两个方面谈谈J2ME游戏图…

php中命名空间、面向对象、访问控制、接口

命名空间: php中命名空间:解决自己编写的代码和php内置及第三方的函数、常量、类命名冲突问题(在不同的命名空间可以定义相同名称的常量、类、函数);及为繁琐的命名创建一个别名,具体如下: //1.简单定义命名空间&…

经典的十个机器学习算法

1、C4.5 机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的 属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的…

JSON数据、字符串拼接、宽字符处理、数组、Notice警告、isset和empty、变量、作用域、常量、include和require

JSON数据: 字面量是代码中表述数据的手段,JSON是一门类似于js字面量表述数据的手段,JSON是现在市面上用的最广的数据表述手段。 1.JSON对象中属性名称必须用双引号引起来 2.JSON中字符串必须用双引号引起来 3.JSON中不允许使用注释 4.JS…

表单及数据提交、表单的作用、服务端接收提交的数据、php处理数据流程、文件域及文件域中数据处理、php展示数据(响应)

表单及数据提交: 表单的作用: 用于收集相关信息;html中有专门提交数据的标签,可以很容易的收集用户输入的信息,这个标签有两个重要的属性:action表单提交的地址和method以什么方式提交表单,通…

数据库、MySQL介绍及安装流程、SQL语句中增删改查、SQL注入、通过php操作数据库,plugin ‘caching_sha2_password加密规则,分表查询

MySQL数据库: 数据库: 存放数据的仓库,用来按照特定的结构去组织和管理我们的数据,有数据库就可以更加方便的储存数据; 数据库只是存储数据的一种手段,最终数据是存放在硬盘中的,只是存放的格…

可能 delphi7 下稳定的最后一版本 GDIPLUS

可能 delphi7 下稳定的最后一版本 GDIPLUS 可能 delphi7 下稳定的最后一版本 GDIPLUS万一的 blog 说"终于, Delphi XE2 携带 GDI 库了使用了较早的 http://www.progdigy.com"但这个网址已经下不了了,而 http://www.bilsen.com/gdiplus 的又要 delphi2009 以后版本,另…

ajax背景、ajax对象、ajax状态、ajax与http、ajax请求数据接口、同步与异步、ajax请求XML数据、封装ajax函数、artTemplate简介、同源策略和跨域请求、JSONP

AJAX简介: ajax背景: 1.AJAX(Asynchronous JavaScript And Xml)异步的 JavaScript 和 XML:ajax是浏览器提供的一套API,最早出现在谷歌浏览器,是在浏览器端进行网络编程(发送请求、接收响应)的技术方案。它可以使我们通过JavaScr…

我的第一个项目(人力资源管理之报表管理)

2014年暑期实习老师要求的是人力资源管理系统,组队后组长分配给的任务是报表管理。 我做的报表管理,主要的功能是用户输入查询的时间区间和查询部门,然后将数据据库返回的数据显示在浏览器上。用户可以选择是否生成excel表格(表格…

jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)

jQuery中使用ajax: 在jQuery中使用ajax首先需要引入jQuery包,其引入方式可以采用网络资源,也可以下载包到项目文件中,这里推荐下载包到文件中;市面上有多个版本的jQuery库,这里到官网:https://…

chartjs和echartsjs库简介

chart.js和echarts.js: 尽管我们已经掌握了canvas绘图和SVG矢量图,在实际开发中我们依旧不会使用canvas和SVG,因为考虑到开发成本,一般会采用相关的图表库进行辅助开发,市面上常用的图表库有chart.js和echarts.js;如果…

弱智的我

【你能看到多少个人头? 】 0—4张: 弱智; 5—8张: 一般人; 9—11张: 特别感性; 11—13张: 精神分裂. 晕倒, 我是弱智的...就看到一个人头...转载于:https://www.cnblogs.com/zhangzujin/p/3877222.html

POJ 1201

d[i]表示在[0,i]这个区间内一共选了d[i]个数 对于每个为[ai,bi]的区间&#xff0c;你必须在这个区间上至少取ci个不同的整数&#xff0c;用d[i]如何表示&#xff1f; d[ bi ]-d[ ai-1 ] > ci Edge:(ai-1 -> bi) val ci 另外&#xff1a; 0<d[i]-d[i-1]<1 对应边Ed…

typecho和wordpress模板了解、开发流程介绍、前台后台前端后端区分

网站模板搭建网站&#xff1a; 使用网站模板搭建网站很简单&#xff0c;只需要将相关文件放到你自己的服务器上面&#xff0c;之后在进行相关的配置即可。这里给大家介绍两款网站模板&#xff1a; typecho&#xff1a; 是一个轻量高效&#xff0c;简单操作就能搭建网站的模板…

*[topcoder]IncrementingSequence

http://community.topcoder.com/stat?cproblem_statement&pm12107 此题想了半天&#xff0c;当时瞥到了Greedy&#xff0c;所以就想着贪心&#xff0c;最后的方法又纸上画了一下应该是对的。就是排序后依次看是不是满足要求。证明就是如果对数字X&#xff0c;有a和b都能够…

在浏览器端调试代码并直接修改原文件、移动端虚拟键盘中实现搜索按钮

在浏览器端调试代码并直接修改原文件&#xff1a; 此调试方法可以避免在浏览器调试完代码后在到原文件手动修改代码的弊端&#xff0c;其具体方法如下&#xff1a; 1.先将要调试的页面在浏览器&#xff08;Google&#xff09;打开&#xff0c;这里小编打开桌面test文件夹中的…

Bootstrap简介、下载bootstrap及引入文件说明、响应式容器和满屏容器、栅格系统

Bootstrap简介&#xff1a; Bootstrap是Twitter&#xff08;推特&#xff09;开发的&#xff0c;目前最受欢迎的前端开源框架&#xff0c;基于jQuery用于开发HTML、CSS、JavaScript&#xff0c;简洁灵活&#xff0c;常用于开发响应式布局及移动端开发。其中文官方文档&#xf…

JavaScript和jQuery的学习

还有12天就要回学校了&#xff0c;我的假期计划还能实现吗&#xff1f;在这12天里&#xff0c;需要把JavaScript和jQuery学完。我知道这两个技术对于前端网页开发非常重要。前期把HTML和CSS学完了&#xff0c;学的不是特别深&#xff0c;只是简单的过一下&#xff0c;自认为HTM…

bootstrap中语义化标签、字体风格、文本布局、列表排列、特殊字体颜色及特殊背景颜色

语义化标签&#xff1a; bootstrap中提供一些语义化标签&#xff0c;它们自带样式&#xff0c;这里介绍几个样式比较明显的语义化标签&#xff1a; <!-- 1.bootstrap中mark标签定义一个有淡黄色背景的文本 --> <p><mark>hello</mark></p><!…