文档章节

mysql主从复制的高可用解决方案

stone_
 stone_
发布于 2016/05/04 18:47
字数 1335
阅读 64
收藏 1

1.1、drbd
     —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID",开源软件,由 LINBIT 公司开发。DRBD 实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中。他是有内核 模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能。也就是说当你将数据写入本地的DRBD设备上的文件系统 时, 数据会同时被发送到网络中的另外一台主机之上,并以完全相同的形式记录在一个文件系统中(实际上文件系统的创建也是由DRBD的同步来实现的)。本地节点 (主机)与远程节点(主机)的数据可以保证实时的同步,并保证IO的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相同的 数据,可以继续使用,以达到高可用的目的。
     实际使用场景中,可以作用于MySQL-master(主备)的服务器,保证数据的一致性。


1.2、hearbeat
     —— 它是Linux-HA工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。它实现IP的自动漂移,即当一台服务器宕机后,浮动IP(整个cluster的对外IP)自动漂移到另外一台服务器,不会引起服务中断。工作原理:heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。


1.3、MMM (MySQL Master-Master Replication Manager) 
     —— MMM利用了虚拟IP的技术:1个网卡可以同时使用多个IP。(所以使用MMM时,需要2*n+1个IP,n为mysql数据库结点个数,包括master,slave)。当有数据库结点fail时,mmmd_mon检测不到mmmd_agent的心跳或者对应的MySQL服务器的状态,mmmd_mon将进行决定,并下指令给某个正常的数据库结点的mmmd_agent,使得该mmmd_agent“篡位”使用(注)刚才fail的那个结点的虚拟IP,使得虚拟IP实际从指向fail的那个机器自动转为此时的这个正常机器。
     具体参考:http://liuyu.blog.51cto.com/183345/98867/http://blog.longwin.com.tw/2008/10/mysql-master-replication-manager-mmm-intro-2008/


1.4、mysql的主从复制(Replication)/同步
     —— 做mysql集群的基本都会选择这个策略。工作方式:MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。详细内容请自行google搜索。


2、mysql的集群
mysql通过主从复制可以很简单的搭建一个集群服务器,并且配置也很简单。主服务器开启二进制日志系统(bin-log),设置可以复制的权限用户等,从服务器设置主服务器的serverid,host等即可实现同步(详细步骤参考http://my.oschina.net/guol/blog/100179) 。简单的示意图如下:

 
问题:当主服务器宕机后,整个集群瘫痪(单点故障)。

 

3、构建mysql高可用集群方案
基于上面的问题,目前可有以下几种方案供选择:
3.1、master-master架构
     两台服务器装mysql,各自作为对方的从机接受对方发来的数据,做到数据的同步备份,感觉和master-slave基本实现原理是一样的。这样保证了数据的一致性,如何保证其中一台服务器故障,自动切换到另外的一个master上呢,使用MMM(MySQL Master-Master Replication Manager)来管理。
   详细配置参考:http://liuyu.blog.51cto.com/183345/98867/


3.2、heartbeat+drbd+mysql主从复制
      基本原理与3.1相似,这里需要做一个master库的冗余备份,使用drbd来保证不同服务器中两个master库的数据一致性。利用heartbeat来完成其中一台服务器发生故障后的自动切换。结构如下图:

 据了解,一般大型网站日pv达到1-2000w以上,都会在主备mysql上层加上一个负载均衡器,如:LVS或者硬件产品F5、Array等。 考虑到成本一般用Lvs/DR+keepalived或hearbeat来完成负载。


© 著作权归作者所有

共有 人打赏支持
stone_
粉丝 20
博文 221
码字总数 163611
作品 0
洛阳
程序员
私信 提问
构建高性能MYSQL集群系统总结

MYSQL高可用集群方案总结 一,常见的高可用MYSQL解决方案 高可用解决方案: 1,数据共享或同步数据,数据共享可通过SAN(Storage Area Network)来实现,数据同步可通过rsync软件或DRDB技术来...

高好亮
2017/03/01
0
0
MySQL 数据库的高可用性分析

MySQL数据库是目前开源应用最大的关系型数据库,有海量的应用将数据存储在MySQL数据库中。存储数据的安全性和可靠性是生产数据库的关注重点。本文分析了目前采用较多的保障MySQL可用性方案。...

OSC_cnhwTY
06/22
0
0
MySQL高可用性分析

版权声明:本文由易固武原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/203 来源:腾云阁 https://www.qcloud.com/community MySQL数据库是目前开源应用...

偶素浅小浅
2016/11/11
4
0
MySQL主从复制与高可用架构方案与项目环境准备_MySQL高可用复制与分布式集群架构01

MySQL高可用复制与分布式集群架构之01:MySQL主从复制与高可用架构方案与项目环境准备 视频教程学习地址 http://edu.51cto.com/course/14238.html 数据库学习专用QQ群:336282998、189070296...

风哥Oracle
08/25
0
0
常见的高可用MySQL解决方案

MySQL数据库作为最基础的数据存储服务之一,在整个系统中有着非常重要的地位,因此要求其具备高可用性是无可厚非的。有很多解决方案能实现不同的SLA(服务水平协定),这些方案可以保证数据库...

tianfuguoss
2015/12/01
226
0

没有更多内容

加载失败,请刷新页面

加载更多

搬瓦工DC3机房和DC8机房哪个速度快,应该选哪个?

搬瓦工DC3机房和DC8机房都是搬瓦工CN2,那么这两个机房比较哪个机房速度快?搬瓦工DC3机房和DC8机房应该选择哪个机房?移动用户用DC8机房还是DC3机房?联通用DC3还是DC8快?电信应该选DC3还是...

Alanbrooke
14分钟前
1
0
探秘Runtime - Runtime介绍

该文章属于<简书 — 刘小壮>原创,转载请注明: <简书 — 刘小壮> https://www.jianshu.com/p/ce97c66027cd Runtime是iOS系统中重要的组成部分,面试也是必问的问题,所以Runtime是一个iOS工...

刘小壮
15分钟前
1
0
图形用户界面和交互输入方法---小结

中国龙-扬科
31分钟前
1
0
当程序员有了中年危机 你会发现你就是个屁

前言 程序员是一个怎样的存在?引用一句鸡汤的名言来说:你以为你用双手改变了世界,实际上是苍老了自己。为什么我今天会抛出这个话题,其实我也是一个懵懂的少年,我也曾经为了成为一名程序...

架构师springboot
42分钟前
11
0
大型网站B2C商城项目实战+MongoDB+Redis+zookeeper+MySQL

本文列出了当今计算机软件开发和应用领域最关键部分,如果你想保证你现在以及未来的几年不失业,那么你最好跟上这些技术的发展。虽然你不必对这十种技术样样精通,但至少应该对它们非常熟悉。...

java知识分子
42分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部