使用DRBD版本:8.2.6(api:88 / proto:86-88)
这里是/etc/ha.d/haresources的内容
db1 192.168.100.200/24/eth0 drbddisk :: mysql文件系统:: / dev / drbd0 :: / drbd :: ext3 :: defaults mysql
和/etc/ha.d/ha.cf
日志文件/ var / log / ha-log
logfacility local0
保持活力1
死亡时间30
warntime 10
initdead 120
支持694
bcast eth0,eth4
auto_failbackclosures
节点db1
节点db2
respawn hacluster / usr / lib64 / heartbeat / ipfail
apiauth ipfail gid = haclient uid = hacluster
死5
在testing机器间的故障转移时,我在db2上运行以下命令:
服务心跳停止 服务mysqld停止 drbdadm下了mysql 服务drbd停止
/ proc / drbd上报db1
0:cs:连接st:主要/未知ds:UpToDate / DUnknown C r ---
接下来发生了什么,之后:
被db1重新安装了DRBD磁盘,承担了正确的IP并启动了MySQL。 有大量的MySQL表损坏; 这是所有可以解决的(使用InnoDB恢复模式6,mysqlcheck和偶尔的备份),但是它是如何发生的?
我猜测:
我有一段时间没有再次访问此设置,并想重复testing。
configuration设置是否正确?
腐败是我手动testing的结果吗?
有没有更好的方法来testing故障转移,而不是停止心跳服务,让它运行haresources命令?
这可能不是一个很大的帮助,但最近在Pacemaker和Linux-HA邮件列表中已经广泛讨论了这个问题。
心跳不是很好,但是对于心脏起搏器,我会设置一个约束,导致群集资源pipe理器在尝试切换之前用磁盘锁写入磁盘(或暂时closuresmysql)刷新磁盘,然后释放一旦交换机完成就locking。
从我读过的所有东西,以及我心中有限的经验,所有你应该做的从一台服务器手动故障转移到另一台是问题
service heartbeat stop
命令。 您的haresources文件中的所有内容都将由心跳控制。 举个例子,我有一个我正在build立的集群需要运行以下服务:
snmpd mysql
这里是haresourcesconfiguration
localhost00 \ drbddisk::home \ Filesystem::/dev/drbd0::/opt/local::ext3::defaults \ drbddisk::perf \ Filesystem::/dev/drbd1::/opt/local/perf::ext3::noatime,data=writeback \ IPaddr::1.1.1.1/24 \ mysqld \ snmpd
这里是我得到的结果(我的appologies,如果是一团糟,我不能在正确的位置获得换行符):
[root@localhost00 ~]# service snmpd status snmpd (pid 18558) is running... [root@localhost00 ~]# service mysqld status mysqld (pid 18509) is running... [root@localhost00 ~]# service drbd status drbd driver loaded OK; device status: version: 8.2.6 (api:88/proto:86-88) GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17 m:res cs st ds p mounted fstype 0:home Connected Primary/Secondary UpToDate/UpToDate C /opt/local ext3 1:perf Connected Primary/Secondary UpToDate/UpToDate C /opt/local/perf ext3 [root@localhost00 ~]# service heartbeat stop Stopping High-Availability services: [ OK ] [root@localhost00 ~]# service snmpd status snmpd is stopped [root@localhost00 ~]# service mysqld status mysqld is stopped [root@localhost00 ~]# service drbd status drbd driver loaded OK; device status: version: 8.2.6 (api:88/proto:86-88) GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17 m:res cs st ds p mounted fstype 0:home Connected Secondary/Secondary UpToDate/UpToDate C 1:perf Connected Secondary/Secondary UpToDate/UpToDate C [root@localhost00 ~]# [root@zenoss00 ~]# service heartbeat start Starting High-Availability services: [ OK ] [root@zenoss00 ~]# service snmpd status snmpd is stopped [root@zenoss00 ~]# service mysqld status mysqld is stopped [root@zenoss00 ~]# service drbd status drbd driver loaded OK; device status: version: 8.2.6 (api:88/proto:86-88) GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-bu m:res cs st ds p mounted fstype 0:zenhome Connected Secondary/Secondary UpToDate/UpToDate C 1:zenperf Connected Secondary/Secondary UpToDate/UpToDate C [root@zenoss00 ~]# service snmpd status snmpd (pid 23055) is running... [root@zenoss00 ~]# service mysqld status mysqld (pid 23006) is running... [root@zenoss00 ~]# service drbd status drbd driver loaded OK; device status: version: 8.2.6 (api:88/proto:86-88) GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17 m:res cs st ds p mounted fstype 0:zenhome Connected Primary/Secondary UpToDate/UpToDate C /opt/zenoss ext3 1:zenperf Connected Primary/Secondary UpToDate/UpToDate C /opt/zenoss/perf ext3 [root@zenoss00 ~]#
注意停止心跳停止了所有分配给心跳的服务(mysqld,snmpd); 还注意到drbd仍在运行,心跳不停止。 DRBD需要运行整个故障转移工作。
再次尝试你的故障转移,但不要运行drbd命令,我想你会避免你的数据损坏。
testing心跳的方法是,您将在一台机器上发出服务心跳停止,并将其切换到另一台机器,并自动启动另一台节点上的所有服务,同时您也不希望closuresdrbd服务。
另一种testing方法是在一台机器上进行硬重启。