drbd脑裂恢复实例

状况1,主服务器网络故障,将从服务器作为主服务器,原主服务器改为从服务器
(最后原主服务器 去 原从服务器同步数据)

从服务器host2:
#service drbd status | tail -1
0:db   WFConnection  Secondary/Unknown  UpToDate/DUnknown  C
#drbdadm disconnect db
#drbdadm primary db
#mount /dev/drbd0 /mnt/drbd/
#service drbd status | tail -1
0:db   StandAlone  Primary/Unknown  UpToDate/DUnknown  r-----  ext3
#cp /mnt/drbd/anaconda-ks.cfg /mnt/drbd/useful

主服务器host1(网络故障未修复):
#service drbd status | tail -1
0:db   WFConnection  Primary/Unknown  UpToDate/DUnknown  C   /mnt/drbd   ext3
#drbdadm disconnect db
#cp /mnt/drbd/anaconda-ks.cfg /mnt/drbd/useless
#umount /mnt/drbd/
#drbdadm down db
#service drbd status | tail -1
0:db   Unconfigured
#drbdadm create-md db

恢复网络故障后(如果用虚拟机测试就启动虚拟机的网卡)

从服务器host2:
#drbdadm connect db
#service drbd status | tail -1
0:db   WFConnection  Primary/Unknown  UpToDate/DUnknown  C  /mnt/drbd  ext3

主服务器host1(网络故障已经修复):
#drbdadm up db
#service drbd status | tail -1
0:db   Connected  Secondary/Primary UpToDate/UpToDate C

从服务器host2:
#service drbd status | tail -1

0:db   Connected  Primary/Secondary  UpToDate/UpToDate  C  /mnt/drbd  ext3


状况2,从服务器网络故障,从服务器从主服务器重新同步数据(从服务器的原数据被毁)

检查从服务器(可省略):
#drbdadm disconnect db
#service drbd status | tail -1
0:db   StandAlone  Secondary/Unknown  UpToDate/DUnknown  r-----
#drbdadm primary db
#service drbd status | tail -1
0:db   StandAlone  Primary/Unknown  UpToDate/DUnknown  r-----
#mount /dev/drbd0 /mnt/drbd/
#service drbd status | tail -1
0:db   StandAlone  Primary/Unknown  UpToDate/DUnknown  r-----  ext3
#ls /mnt/drbd/
#umount /mnt/drbd/
#drbdadm secondary db
#service drbd status | tail -1
0:db   StandAlone  Secondary/Unknown  UpToDate/DUnknown  r-----

检查主服务器(可省略):
#service drbd status | tail -1
0:db   WFConnection  Primary/Unknown  UpToDate/DUnknown  C  /mnt/drbd  ext3

故障恢复后:

恢复从服务器:
#drbdadm down db
#service drbd status | tail -1
0:db   Unconfigured
#drbdadm create-md db
注1
#drbdadm up db
#service drbd status | tail -1
0:db   SyncTarget  Secondary/Primary  Inconsistent/UpToDate  C
同步中,一段时间后
#service drbd status | tail -1
0:db   Connected  Secondary/Primary  UpToDate/UpToDate  C

注1
在drbdadm down db后是不能直接drbdadm up db的,否则2台服务的状态都会变成StandAlone。
这样的情况下必须在所有节点上执行drbdadm connect db才能同步数据。
但是drbdadm up db命令是包含drbdadm connect db的,因此执行了drbdadm up db后,drbdadm connect db可以省略。


参考:

http://blog.chinaunix.net/uid-20346344-id-3491500.html

你可能感兴趣的:(系统运维,LINUX)