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、更不会重启服务器了、基本上没遇到脑裂的问题。

    广告一刻

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