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

mysql+drbd+heartbeat实现高可用性

    博客分类:
  • HA
阅读更多

本文原址:
http://bbs.yahunet.com/thread-1661-1-1.html

转载请注明!

1,什么是DRBD
DRBD(Distributed Replicated Block Device),DRBD 号称是 "网络 RAID",开源软件,由 LINBIT 公司开发。
2,DRBD的主要功能
DRBD 实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中。他是有内核 模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能。也就是说当你将数据写入本地的DRBD设备上的文件系统 时, 数据会同时被发送到网络中的另外一台主机之上,并以完全相同的形式记录在一个文件系统中(实际上文件系统的创建也是由DRBD的同步来实现的)。本地节点 (主机)与远程节点(主机)的数据可以保证实时的同步,并保证IO的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相同的 数据,可以继续使用,以达到高可用的目的。
3,DRBD的主要应用
如果主服务器宕机,造成的损失是不可估量的。要保证主服务器不间断服务,就需要对服务器实现冗余。在众多的实现服务器冗余的解决方案 中,heartbeat 为我们提供了廉价的、可伸缩的高可用集群方案。我们通过heartbeat + drbd在Linux下创建一个高可用(HA)的集群服务器,在高可用(HA)解决方案中使用DRBD的功能,可以代替使用一个共享盘阵存储设备。因为数 据同时存在于本地主机和远程主机上,在遇到需要切换的时候,远程主机只需要使用它上面的那份备份数据,就可以继续提供服务了。
4,DRBD于mysql的关系
MySQL 与 LINBIT 达成了合作关系,大张旗鼓的搞了这个 "12 天 Scale-Out" 活动,也是这个商业合作驱动的吧。DRBD 助力 MySQL, 号称可以得到四个 9 的可靠性,这不低于任何一款商业数据库 软件了。
DRBD 的出现的确对 MySQL 集群的可用性 有很大提高。而且,有独到的特点,非常适合面向互联网的应用。因为是在存储层的数据块同步,很容易的做到应用层的 IO 负载均衡(备机承担一定的读压力),不但支持数据库失败接管,还能做到 IP 失败接管,接管时间小于 30 秒,真是穷人的绝佳集群解决方案。

IP地址说明:
master
192.168.100.20   
slave
192.168.100.21  
VIP 192.168.100.25

1、管理节点mysql安装
修改主机名为manager
# tar -zxvf mysql-5.0.67.tar.gz
# cd mysql-5.0.67
# groupadd mysql
# useradd -g mysql -s /sbin/nologin -M mysql
# ./configure --prefix=/usr/local/mysql --with-charset=gbk --localstatedir=/var/data --with-extra-charset=all --enable-thread-safe-client
# make && make install
# cp support-files/my-large.cnf /etc/my.cnf
# chown -R mysql.mysql /usr/local/mysql/
# /usr/local/mysql/bin/mysql_install_db --user=mysql
# chown -R root.root /usr/local/mysql/
# chown -R mysql.mysql /var/data
启动数据库服务,并添加到自启动
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
# cp support-files/mysql.server   /etc/rc.d/init.d/mysqld
# chm od 755 /etc/rc.d/init.d/mysqld
加入服务队列:
# chkconfig --add mysqld
添加root密码
# /usr/local/mysql/bin/mysqladmin -u root password "123456"

配置 库文件搜索路径
# echo "/usr/local/mysql/lib/mysql">>/etc/ld.so.conf
# ldconfig
# ldconfig -v
添加/usr/local/mysql/bin到环境变量PATH中
#echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
#source /etc/profile

2、从服务器mysql的安装同上
3、DRBD的安装和设置
(1)安装DRBD(主从服务器安装相同)
# tar -zxvf drbd-8.3.0.tar.gz
# cd drbd-8.3.0
# make KDRI=/usr/src/redhat /
# make install
检查是否生成了相应的文件:/etc/drbd.conf ; /etc/init.d/drbd ; 以及./drbd/drbd.ko
加载安装drbd模块
# modprobe drbd
通过lsmod检查是否已经成功
#lsmod |grep drbd
如果有,则表示成功了
(2)更改drbd配置文件(主从服务器相同)
准备drbd要使用的分区 ,该分区最好是干净的分区,我在虚拟机中重新划分了一个分区/dev/sdb1作为drbd使用。
# vi /etc/drbd.conf
resource r0 {
  protocol C;
  startup {
    degr-wfc-timeout 120;
     }
  disk {
    on-io-error   detach;
      }
  net {
  }
  syncer {
    rate 10M;
  }
  on master{
//master为主服务器的主机名
    device     /dev/drbd0;
    disk       /dev/sdb1;
    address    192.168.100.20:7788;
    meta-disk  internal;
  }
  on slave{
//master为从服务器的主机名
    device    /dev/drbd0;
    disk      /dev/sdb1;
    address   192.168.100.21:7788;
    meta-disk internal;
  }
}
(3)主服务器的设置
创建matadata:
# drbdadm create-md all
2次输入“yes”
启动drbd:
# /etc/init.d/drbd start
在启动第一个节点上的DRBD服务的时候,他会等待第2个节点的DRBD服务的启动,此时启动第2个节点上的DRBD服务即可。
查看drbd的运行状态
# cat /proc/drbd           
此时可以看到,已经开始同步数据了。设置完之后的第一次同步耗时比较长,因为需要把整个分区的数据全部同步一遍。
设置为主节点:
# drbdadm  primary all
如果不成功使用这个命令
# drbdsetup /dev/drbd0 primary -o
在新设备上面创建文件系统
# mkfs.ext3 /dev/drbd0
挂载文件系统
# mkdir /var/data
# mount /dev/drbd0 /var/data

在主节点上写入数据
然后,我们把primary降级成secondary,把secondary提升成primary:
# umount /var/data
# drbdadm secondary all
从节点
把primary降级前,一定要先umount设备才行。然后提升secondary:
# drbdadm primary all
# mount /dev/drbd0 /var/data/
查看一下数据同步过来没

4、安装配置heartbeat(主从服务器的安装和配置相同):
(1)先安装libnet
# tar -zxvf libnet.tar.gz
# cd libnet
# ./configure
# make
# make install
(2)安装heartbeat
# groupadd haclient
# useradd -g haclient hacluster
# tar -jxvf Heartbeat-STABLE-2-1-STABLE-2.1.4.tar.bz2
# cd Heartbeat-STABLE-2-1-STABLE-2.1.4
# ./ConfigureMe configure --disable-swig --disable-snmp-subagent
# make
# make install
# cp doc/ha.cf /etc/ha.d/
# cp doc/haresources /etc/ha.d/
# cp doc/authkeys /etc/ha.d/
(3)Authkeys配置
# chmod 600 authkeys  主节点和从节点间数据校验用的
# vi /etc/ha.d/authkeys
把 #auth 1
   #1 crc
   #2 sha1 HI!
   #3 md5 Hello!
改成:
   auth 3
   #1 crc
   #2 sha1 HI!
   3 md5 Hello!
(4)资源文件haresources配置
# vi /etc/ha.d/haresources
在配置文件中添加如下一行
master drbddisk Filesystem::/dev/drbd0::/var/data::ext3  mysqld 192.168.100.25
上面资源组中的各项含义如下:
master            当前primary节点名(uname -n)
drbddisk          告诉heartbeat要管理drbd的资源
Filesystem        这里是告诉heartbeat需要管理文件系统资源,其实实际上就是执行mount/umount命令,后面的“::”符号之后是跟的 Filesystem的参数设备名和mount点)
mysqld            告诉需要管理mysql
192.168.100.25    这里是让heartbeat帮你管理一个service ip,会跟着主节点一起漂移
(5)ha.cf配置
# vi /etc/ha.d/ha.cf
#debugfile /var/log/ha-debug的注释去掉
#keepalive 2    去注释
#deadtime 15    去注释
#warntime 10    去注释把10改成5
#initdead 120   去注释
#udpport 694    去注释
#bcast eth0    #Linux   去注释
#watchdog /dev/watchdog  去注释也可以不打开
#node den3    把den3改成master  这里要注要它是主节点名称下面的是副节点名称,一定要与uname -n一致.
#node dathy   把dathy改成slave
#ping_group group1 10.10.10.254 10.10.10.253 去注释改:ping_group group1 192.168.100.20  192.168.10.21
#respawn hacluster /usr/lib/heartbeat/ipfail 去注释
#apiauth ipfail gid=haclient uid=hacluster 去注释
#hopfudge 1 去注释  它就是集群中活跃节点的数量
(6)启动heartbeat
# /etc/init.d/heartbeat start
# echo "/etc/init.d/heartbeat start">>/etc/rc.local
# ps -ef | grep heartbeat查看一下

5、测试
可以拔掉主节点服务器的网线,看看有什么情况发生,测试是否正常?
然后再把网线插回去,MySQL服务能否自动切换回来? 

分享到:
评论
1 楼 bingwong 2011-07-15  
好文章!自己也总结一下: DRDB主要完成数据库之间的同步。

相关推荐

    Mysql+drbd+heartbeat+amoeba集群配置详解

    根据提供的信息,我们可以详细探讨如何构建一个基于MySQL、DRBD(Distributed Replicated Block Device)、Heartbeat以及Amoeba的高可用性和负载均衡的数据库集群系统。这种集群配置旨在提高系统的稳定性和数据的...

    mysql+heartbeat+drbd集群方案

    MySQL+Heartbeat+DRBD集群方案是一种高效的高可用解决方案,它通过Heartbeat实现故障检测与自动切换,DRBD保证数据的一致性,从而有效避免了单点故障的风险。这种架构不仅适用于传统的企业环境,也能够很好地适应云...

    mysql+heartbeat+drbd软件集合

    在实际部署中,MySQL+Heartbeat+DRBD的组合通常用于构建高可用性的数据库环境。首先,MySQL的主服务器负责处理所有写入操作,同时通过DRBD将这些更改实时同步到备用服务器。Heartbeat则负责监控这两台服务器的状态,...

    Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节

    虽然Heartbeat和Keepalived都能实现高可用性,但它们的应用场景和功能有所不同: 1. **Web、DB、负载均衡**:两者都能应用于这些领域。 2. **LVS与Keepalived**:LVS与Keepalived的结合更为紧密,因为Keepalived...

    MySQL高可用扩展集群应用之配置mysql+heartbeat+drbd实现Mysql写操作高可用.pdf

    在本资料中,我们关注的是通过配置MySQL与Heartbeat和DRBD来实现写操作的高可用性。以下是详细的知识点说明: 1. **DRBD(Distributed Replicated Block Device)**: - DRBD是一种分布式存储解决方案,它可以在两...

    DRBD+HEARTBEAT+MYSQL(mysql一主多从)安装配置及测试_V_0.2.doc

    DRBD(Distributed Replicated Block Device)是一种分布式存储技术,它可以在两台服务器之间实时同步数据,实现高可用性;HEARTBEAT是一款心跳监测软件,用于监控服务器状态,当主服务器故障时自动切换到备用服务器...

    Centos5.6 x86_64下部署安装DRBD+Heartbeat+MySQL

    本文档旨在指导用户在 Centos5.6 x86_64 操作系统下部署安装 DRBD+Heartbeat+MySQL 服务器平台,实现高可用集群环境。通过本文档,用户可以学习如何在 Centos5.6 x86_64 操作系统下安装和配置 DRBD、Heartbeat 和 ...

    Heartbeat MySQL DRBD构建高可用MySQL方案

    在IT领域,构建高可用性(High Availability, HA)的数据库系统是确保业务连续性和...它通过DRBD的实时数据同步和Heartbeat的故障检测及资源管理,实现了MySQL数据库的高可用性和数据安全性,是企业级应用的理想选择。

    Heartbeat DRBD MySQL 高可用方案搭建.docx

    【Heartbeat DRBD MySQL 高可用方案搭建】 在IT领域,构建高可用系统是保障业务连续性和数据安全的重要措施。本方案将详细讲解如何利用Heartbeat、DRBD和MySQL搭建一个高可用环境,确保数据库服务的稳定运行。 **...

    利用Heartbeat_DRBD搭建MySQL高可用环境

    这样做的目的是为了在主节点出现问题时,备节点可以迅速接管业务,保证服务的高可用性。 Heartbeat是Linux-HA(High Availability)项目的一个组成部分,它是一个用于监控和控制高可用服务与资源的软件。Heartbeat...

    MySQL数据库高可用性方案.pdf

    本文主要探讨了几种常见的MySQL高可用性解决方案,包括MySQL主从复制、MySQL+Heartbeat+存储、MySQL+DRBD+Heartbeat以及MySQL Cluster。 1. **MySQL+Replication** - **概述**:MySQL的异步复制允许数据从一个主...

    mysql高可用扩展集群应用讲义.zip

    内容概要: Drbd+Heartbeat+Lvs+Keepalived+Mysql可行性分析(第一讲) Mysql主从复制的实现(第二...配置mysql+heartbeat+drbd实现Mysql写操作高可用(第三讲) 配置mysql+lvs+keeplived实现Mysql读操作的负载均衡(第四讲)

    mysql数据库高可用性方案.doc

    本方案由陈明于2010年7月25日撰写,旨在探讨多种MySQL高可用性实现方法,包括MySQL复制、心跳系统结合共享存储以及DRBD技术。 I. 综述 在当今信息化社会,数据的稳定性和可访问性对于任何企业都是至关重要的。MySQL...

    Mysql数据库高可用性方案实践

    在上述高可用性方案的实践中,涉及到的几个关键点包括Mysql的安装配置、主主同步配置、Lvs和Keepalived的安装与配置、Heartbeat的配置以及DRBD的管理和维护等。每一步操作都需要按照指南仔细完成,并通过实际测试来...

    mysql高可用架构

    Heartbeat 和 Keepalived 均可用于实现高可用性,但在具体应用场景上有所区别: - **Keepalived**:更适合于无需数据同步的应用程序,如 Web 服务器或负载均衡器等。 - **Heartbeat**:适用于需要数据同步的应用...

    mysql高可用方案实战

    - 结合Heartbeat和DRBD技术,实现数据块级别的同步和高可用性。 - **5.2 方案优缺点** - **优点**:提供了更高级别的数据一致性保障。 - **缺点**:配置复杂度较高,需要对DRBD有一定的了解。 - **5.3 方案架构图...

Global site tag (gtag.js) - Google Analytics