MySQL DRBD使用指南,如何实现高可用性数据***?

avatar
作者
猴君
阅读量:0
MySQL DRBD(分布式***块设备)是一种用于实现高可用性的解决方案,通过在多台服务器之间同步数据块来提供数据冗余和故障切换能力。

DRBD(Distributed Replicated Block Device,分布式***块设备)是一种用软件实现的、无共享的、服务器之间镜像块设备内容的存储***解决方案,它通过在各个节点上运行,并在节点主机的内核中注册钩子检查数据,从而实现活动节点存储数据更动后自动***到备用节点相应存储位置的功能。

MySQL DRBD使用指南,如何实现高可用性数据复制?

DRBD工作原理

DRBD需要运行在各个节点上,且是运行在节点主机的内核中,所以DRBD是内核模块,在Linux 2.6.33版本起开始整合进内核,左节点为活动节点(实箭头),右节点为备用节点,左节点接收到数据发往内核的数据通路,DRBD在数据通路中注册钩子检查数据,当发现接收到的数据是发往到自己管理的存储位置,就***另一份,一份存储到本机的DRBD存储设备,另一份就发给TCP/IP协议栈,通过网卡网络传输到另一节点主机的网上TCP/IP协议栈;而另一节点运行的DRBD模块同样在数据通路上检查数据,当发现传输过来的数据时,就存储到DRBD存储设备对应的位置,如果左节点宕机,右节点可以在高可用集群中成为活动节点,当接收到数据先存储到本地,当左节点恢复上线时,再把宕机后右节点变动的数据镜像到左节点。

DRBD支持的底层设备

DRBD需要在底层设备上构建出一个块设备,对于用户来说,一个DRBD设备,就像是一块物理的磁盘,可以在DRBD设备内创建文件系统,DRBD所支持的底层设备类别包括:磁盘或者是磁盘的一个分区;soft raid 设备;LVM的逻辑卷;EVMS(Enterprise Volume Management System,企业卷管理系统)卷;或其它任何块设备。

DRBD资源

DRBD资源定义DRBD管理的存储空间及相关信息,主要配置以下四个选项:

资源名称:可以是除了空白字符外的任意ACSII码字符。

DRBD设备:在双方节点上,此DRBD设备的设备文件,一般为/dev/drbdN,其主设备号147。

磁盘:在双方节点上,各自提供的存储设备。

网络配置:双方数据同步时所使用的网络属性。

DRBD配置工具

MySQL DRBD使用指南,如何实现高可用性数据复制?

DRBD主要有以下三个配置工具:

drbdadm:高级管理工具,管理/etc/drbd.conf,向drbdsetup和drbdmeta发送指令。

drbdsetup:配置装载进kernel的DRBD模块,平时很少直接用。

drbdmeta:管理META数据结构,平时很少直接用。

DRBD与RAID1区别

RAID1也是实现不同存储设备间的数据镜像备份,不同的是RAID1各存储设备是连接一个RAID控制器接入到一台主机上的,而DRBD是通过网络实现不同节点主机存储设备数据的镜像备份。

DRBD与共享存储

如果各节点访问同一个数据文件都是在同一个存储空间内的,就是说数据共享的就一份,则这个存储空间就共享存储,而DRBD定义上就指出了“无共享”——不同节点存储设备空间是镜像,DRBD可以直接应用在主备模型的集群中,也可通过高可用软件如corosycn应用在双主模型集群中,不过这就需要DML/OCFS2/GFS2等分布式集群文件系统为双主读写的时候分配锁,还有就是DRBD为NFS共享存储提供高可用镜像备份。

DRBD安装配置

在安装配置DRBD前,需要做一些准备工作,以下步骤需要在两个节点都执行,设置静态IP编辑网卡配置文件,将BOOTPROTO设置为static。

测试MySQL数据同步

MySQL DRBD使用指南,如何实现高可用性数据复制?

大多数MySQL高可用解决方案都是基于MySQL自带的各种***技术,本质上是将一个实例上的数据更新或事务,在其它实例上进行重放,从而完成数据***,当生产实例出现问题无法提供服务时,应用连接切换到其它实例,实现数据库服务持续可用,从这个角度看,使用DRBD实现MySQL高可用的方式则完全不同,它与MySQL***毫无关系,可以说是另辟蹊径。

Heartbeat+DRBD+mysql高可用方案

Heartbeat是一个用于实现高可用性的软件套件,它可以检测服务器或网络服务的故障,并在发生故障时自动切换到备用服务器,在MySQL环境中,Heartbeat可以与DRBD结合使用,以实现数据的高可用性和容灾能力。

FAQs

Q1:DRBD的优缺点是什么?

优点:没有单点故障的风险暴露;没有集群软件通病、如脑裂;DRBD的备机目前还不能提供读、所以浪费了资源;DRBD无法代替备份;DRBD可能会造成坏数据、不管啥HA、数据备份一定要有、没备份、整个HA瘫痪掉、你也嗝屁了、闪人吧;故障转移无法做到秒级以内;对于MyISAM表用处不大事实上、任何期望高可用的系统、MyISAM都不会是个选择、因为 MyISAM 的崩溃恢复后需要很多时间修复、会丢失数据;增加写操作负担主要是InnoDB设置为 innodb_flush_log_at_trx_commit=1 导致许多小的写入和fsync()调用、DRBD同步将会比较缓慢。

缺点:浪费资源;无法代替备份;可能会造成坏数据;故障转移无法做到秒级以内;对于MyISAM表用处不大;增加写操作负担。

Q2:如何避免DRBD的脑裂问题?

注意不设置自动启动、重启时候手动启动、脑裂的情况发生非常的少工作中基本不重启 DRBD、更不会重启服务器了、基本上没遇到脑裂的问题。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!