MySQL高可用方案介绍
本文简单描述了本人初学MySQL的时候整理的一个MySQL高可用方案的PPT,虽然不太全面也不一定准确,但还是想拿出来和大家共享一下,共同讨论,共同进步。
欢迎转载,请注明作者、出处。
MySQL-Transefer(下称Transfer)是一个基于MySQL+patch后得到的主从同步工具。
其主要目的是为了解决原版本的主从同步里,从库是单线程apply主库的binlog,导致的延迟。
MySQL5.6以后的版本,从库即可多现在apply主库的binlog。
对于数据实时性要求不是特别严格的应用,只需要通过廉价的pc server 来扩展Slave 的数量,将读压力分散到多台Slave 的机器上面,即可通过分散单台数据库服务器的读压力来解决数据库端的读性能瓶颈,毕竟在大多数数据库应用系统中的读压力还是要比写压力大很多。这在很大程度上解决了目前很多中小型网站的数据库压力瓶颈问题,甚至有些大型网站也在使用类似方案解决数据库瓶颈。
搭建成一个Dual Master 环境,并不是为了让两端都提供写的服务。在正常情况下,我们都只会将其中一端开启写服务,另外一端仅仅只是提供读服务,或者完全不提供任何服务,仅仅只是作为一个备用的机器存在。主要还是为了避免数据的冲突,防止造成数据的不一致性。因为即使在两边执行的修改有先后顺序,但由于Replication 是异步的实现机制,同样会导致即使晚做的修改也可能会被早做的修改所覆盖
通过Dual Master 复制架构,我们不仅能够避免因为正常的常规维护操作需要的停机所带来的重新搭建Replication 环境的操作,因为我们任何一端都记录了自己当前复制到对方的什么位置了,当系统起来之后,就会自动开始从之前的位置重新开始复制,而不需要人为去进行任何干预,大大节省了维护成本。
在MySQL Cluster 主配置文件(在管理节点上面,一般为config.ini)中,有一个非常重要的参数叫NoOfReplicas,这个参数
指定了每一份数据被冗余存储在不同节点上面的份数,该参数一般至少应该被设置成2
mysql cluster成本更低,oracle rac更成熟,而且应用案例很多;
mysql cluster虽然设计很好,但是功能实现还不够完美,目前应用案例并不多,更多的案例是mysql replication
因为MySQL Cluster将数据分布到几个NDB节点之上,连接查询时,如果需要连接的表位于不同的NDB节点上,就需要将不同节点上的数据拿到本地再进行连接查询,这样对资源消耗比较大。(不过在MySQL Cluster7.3版本中,增加了适应性join查询,减小了以往join查询对资源的消耗)
Heartbeat是Linux-HA工程的一个组件。heartbeat最核心的包括两个部分:心跳监测和资源接管。在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。
比如用shell脚本监测到master的mysql不可用就将主上的heartbeat停掉,这样就会切换到backup中去
DRBD是通过网络来实现块设备的数据镜像同步的一款开源Cluster软件。
Lvs是一个虚拟的服务器集群系统,可以实现LINUX平台下的简单负载均衡。
keepalived是一个类似于layer3, 4 & 5交换机制的软件,主要用于 主机与备机 的故障转移。
高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator,也常与MySQL数据库一起使用
MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)是一套灵活的脚本程序?用来对mysql replication进行监控和故障迁移?并能管理mysql Master-Master复制的配置 。附带的工具套件可以实现多个slaves的read负载均衡
HAProxy提供高可用性、负载均衡,比较适合负载特大的web站点。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
没想到,阿里工程师每天必刷的网站是......
阿里人每日必逛的神奇内网 阿里内外是阿里内部员工使用的企业运行与协作平台。它诞生于2013年,彼时只是一个门户和企业社交的入口。但经过3年发展,阿里内外实现了平台化运营,不仅接入众多阿里应用与系统,阿里的生态公司也开始享受阿里内外提供的一体化服务。今年,阿里内外开始向3.0智能模式发展,通过互联网数据和算法技术,增加诸如企业搜索、企业推荐、智能工作辅助,通过智能模式提高员工协同办公效率。 阿里内外界面 阿里有一句老话:一个人可以走得很快,但是一群人可以走得很远。在阿里,组织文化与工作协同是最重要的两大核心生态,作为服务内部员工的协作平台,文化和协同也是阿里内外不可或缺的核心元素。 在组织文化方面,阿里内外上有一个非常具有阿里特色的版块——阿里味。阿里高管和员工都愿意在阿里味上分享自己的点子和想法,甚至是组织上的一些问题也可以畅所欲言,大大
- 下一篇
Java内存泄漏介绍
内存管理是Java最重要的优势之一,你只需创建对象,Java垃圾收集器会自动负责分配和释放内存。但是,情况并不那么简单,因为在Java应用程序中经常发生内存泄漏。 本章会说明什么是内存泄漏,为什么发生,以及如何防止它们。 什么是内存泄漏? 内存泄漏的定义:应用程序不再使用的对象,垃圾收集器却无法删除它们,因为它们正在被引用。 为了理解这个定义,我们需要了解对象在内存中的状态。下图说明了什么是未引用的,什么是引用的对象。 image 从图中可以看出,有被引用的对象和未被引用的对象。未引用的对象将被垃圾收集,而被引用的对象将不会被垃圾收集。未引用的对象肯定是未使用的,因为没有其他对象引用它。但是,未使用的对象并不是全部未被引用,其中一些被引用!这是内存泄漏的来源。 为什么内存泄漏发生? 让我们来看看下面的例子,看看为什么发生内存泄漏。在下面的例子中,对象A是指对象B。A的生命周期(t1 - t4)比B的(t2 - t3)长得多,当应用中不再使用B时,A仍然有一个B的引用,这样垃圾收集器就不能从内存中删除B。这就可能会导致内存不足的问题,因为如果A同时为更多的对象做同样的事情,那么会有很多像...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- MySQL8.0.19开启GTID主从同步CentOS8
- Red5直播服务器,属于Java语言的直播服务器
- Mario游戏-低调大师作品
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题