`
aokunsang
  • 浏览: 815278 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

         声明:以下仅为个人的一些总结和随写,如有不对之处,还请看到的网友指出,以免误导。 (详细的配置方案请google,这里只说解决方案。)

 

 

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来完成负载。

  • 大小: 91.3 KB
  • 大小: 6.9 KB
分享到:
评论
1 楼 呵呵6666 2016-12-08  
不错,谢谢分享!推荐个参考视频内容:http://www.roncoo.com/course/view/3117ffd4c74b4a51a998f9276740dcfb

相关推荐

    MYSQL数据库主从复制高可用技术改造环境部署方案

    ### MySQL数据库主从复制高可用技术改造环境部署方案 #### 安装部署DRBD DRBD(Distributed Replicated Block Device)是一种分布式复制块设备,主要用于实现数据在两台或多台服务器之间的实时同步,以此来构建高...

    MYSQL主从复制高可用实施手册

    MySQL主从复制是一种常见的数据库高可用性和负载均衡解决方案,它允许数据从一个主数据库(Master)实时同步到一个或多个从数据库(Slave)。在这种架构中,所有写操作都在主节点执行,而读操作可以在主节点或从节点...

    MySQL高可用解决方案_社区 .pdf

    本文将重点介绍MySQL高可用性的演变历程、常用解决方案,以及InnoDB Cluster和群组复制(MySQL Group Replication)的详解。 ### MySQL高可用性的演变 MySQL的高可用性经历了多次技术演进。从早期的版本3.23开始,...

    高可用MYSQL,主从复制,集群和负载平衡

    高可用MYSQL主从复制、集群和负载平衡 MySQL 集群是指将多个 MySQL 服务器组合成一个集群,以提高数据库的可用性、可扩展性和性能。MySQL 集群可以分为多种类型,例如主从复制集群、多主多从集群、负载平衡集群等...

    MySQL主从复制与读写分离.docx

    MySQL 主从复制是指将一个 MySQL 服务器的数据实时同步到另一个 MySQL 服务器中,以实现数据的高可用性和读写分离。下面是 MySQL 主从复制与读写分离的详细知识点: MySQL 主从复制 MySQL 主从复制是指将一个 ...

    MySQL主从复制:构建高可用和高性能的数据架构

    在现代数据库架构中,MySQL主从复制是一种常用的技术,用于实现数据的高可用性、负载均衡和数据备份。本文将详细介绍MySQL主从复制的原理、配置步骤、不同复制模式以及在实际应用中的策略和优化。 MySQL主从复制是一...

    MySQL 主从复制模式全面实践

    #### 常见的复制方案 - **一主多备(One Master and Multiple Slaves)**:这是读写分离的典型架构,可以使用多台从服务器进行读取操作,但写操作只在主服务器上进行。 - **主从复制结合中继(Master-Slave-Slave ...

    mysql 主从复制环境搭建

    1. 数据库高可用性:主从复制可以确保数据库的高可用性和可靠性。 2. 负载均衡:主从复制可以将读写操作分布到多个服务器上,减少单个服务器的负载。 3. 读写分离:主从复制可以将读操作和写操作分离,提高系统的...

    SpringBoot第 12 讲:SpringBoot+MySQL主从复制、读写分离

    主从复制是MySQL数据库的一种高可用性解决方案,其中一台服务器(主服务器)处理所有写操作,而其他服务器(从服务器)同步主服务器上的数据变化,从而形成一个读写分离的环境。这种设计模式有助于减轻主服务器的...

    MYsql主从复制.docx

    * 高可用性:Mysql主从复制可以实现高可用性,确保数据库的连续性和可靠性。 * 负载均衡:Mysql主从复制可以实现负载均衡,减少服务器的负载,提高数据库的性能。 * 读写分离:Mysql主从复制可以实现读写分离,提高...

    使用keepalived实现对mysql主从复制的主备自动切换.docx

    keepalived是一款高可用性解决方案,可以实现虚拟IP的管理和服务监控,在mysql主从复制环境中使用keepalived可以实现自动切换,提高系统的可用性和可靠性。 Keepsalived概述 keepalived是一款开源的高可用性解决...

    MySQL主从复制模式全面实践

    MySQL主从复制是一种数据库高可用性和数据冗余的重要机制,它允许数据从一个服务器(主节点)同步到一个或多个其他服务器(从节点)。在本实践中,我们将深入探讨这一模式的各个方面,包括其工作原理、配置步骤、...

    MySQL主从复制.docx

    ### MySQL 主从复制详解 #### 一、引言 MySQL 的主从复制是一种常见的数据库架构模式,它能够帮助实现数据的自动备份与读写分离,从而增强数据安全性并提高数据库性能。本文将详细介绍 MySQL 主从复制的基本概念、...

    MySQL主从复制-主库已有数据的解决方案.docx

    MySQL 主从复制主库已有数据的解决方案 在 MySQL 主从复制中,主库可能已经运行了一段时间,并且已经有了数据,这种情况在实际业务中很常见。这时,如何应对开启主从复制前主库有数据的场景?本文将介绍两种解决...

    MySQL主从复制与读写分离

    总结来说,MySQL主从复制与读写分离是构建高可用、高性能数据库架构的关键技术。它们允许我们在不影响服务的情况下进行维护、扩展和故障恢复,是大数据时代数据库管理的重要策略。在实际应用中,需要结合业务需求和...

Global site tag (gtag.js) - Google Analytics