HeartBeat在此是用来做热备切换的,两节点间通过心跳线连接,如果主节点死机的话,可以通过HA将DRBD快速切换到另外一个节点,同时抢占虚拟IP,并启动MySQL,对MySQL客户端来说,只有很短时间的中断。此模式能有效提高MySQL的可用性。
一.环境
--------------------------------
OS: CentOS 5.5 32位
DRBD: 8.3.9编译安装 (http://www.drbd.org/)
Hostname: centos1
Ip: 192.168.0.201
====Node2====
Hostname: centos2
--------------------------------
从www.drbd.org下载drbd-8.3.9.tar.gz,分别在两个节点上编译安装:
注意,DRBD需要内核模块支持,2.6.33后的Linux内核已内置DRBD的支持,在此版本前,安装时需要kernel-devel包,同时编译drbd时要带上--with-km。
#./configure --prefix=/ --with-km
#make
#make install
#chkconfig --add drbd
#chkconfig drbd on
检查安装是否成功:
#drbdadm
看是否以执行成功
#cat /proc/drbd
是否可以看到版本信息
重启后再次检查cat /proc/drbd
--------------------------------
注意,新版本的DRBD的配置文件已拆分成多个,全部放在/etc/drbd.d/目录,具体可参考/etc/drbd.conf中的配置.
如果开了iptables防火墙,需要打开对应的7789端口。
在主节点配置/etc/drbd.d/dbdata.res:
=========dbdata.res begin===========
resource dbdata {
on centos1{
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.0.201:7789;
meta-disk internal;
}
on centos2{
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.0.202:7789;
meta-disk internal;
}
}
=========dbdata.res end===========
创建drbd设备
#drbdadm create-md all
#/etc/init.d/drbd restart
查看是否有相应的块设备:
#ls -l /dev/drbd1
#cat /proc/drbd
# cat /proc/drbd
GIT-hash: 1c3b2f71137171c1236b497969734da43b5bec90 build by root@centos1, 2011-04-18 17:28:21
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:4706832
/sbin/drbdadm secondary r0 (此命令为降级)
# cat /proc/drbd
GIT-hash: 1c3b2f71137171c1236b497969734da43b5bec90 build by root@centos1, 2011-04-18 17:28:21
ns:1383040 nr:0 dw:0 dr:1383040 al:0 bm:84 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:3323792
[====>...............] sync'ed: 29.5% (3244/4596)M
finish: 0:43:08 speed: 1,280 (1,268) K/sec
# cat /proc/drbd
version: 8.3.9 (api:88/proto:86-95)
GIT-hash: 1c3b2f71137171c1236b497969734da43b5bec90 build by root@centos1, 2011-04-18 17:28:21
1: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r--- ns:497928 nr:0 dw:0 dr:497928 al:0 bm:31 lo:0 pe:0 ua:0 ap:0 resync: used:0/31 hits:31091 misses:31 starving:0 dirty:0 changed:31 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
用来接收主机数据的,由DRBD负责操作.
在centos1上执行:
[root@centos1 /]# mount /dev/drbd1 /data1
-rw-r--r-- 1 root root 56857784 Mar 13 16:41 mysql-6.0.3-alpha-linux-x86_64-glibc23.tar.gz
然后提升secondary:
[root@centos2 /]# ls –l /data
-rw-r--r-- 1 root root 56857784 Mar 13 16:41 mysql-6.0.3-alpha-linux-x86_64-glibc23.tar.gz
切换主从节点前,要注意umount
主从切换: drbdadm primary all, drbdadm secondary all
节点间连接:drbdadm connect|disconnect all
DRBD脑裂后的处理:
脑裂后,两个节点间数据不同步,主从关系失效,需要按下面的步骤修复:
a.在从节点如下操作:
#drbdadm secondary dbdata
#drbdadm -- --discard-my-data connect dbdata
b.在主节点上,通过cat /proc/drbd查看状态,如果不是WFConnection状态,需要再手动连接:
#drbdadm connect dbdadta