DRBDバージョンの使用:8.2.6(api:88/proto:86-88)
/etc/ha.d/haresourcesの内容は次のとおりです
db1 192.168.100.200/24/eth0 drbddisk :: mysql Filesystem ::/dev/drbd0 ::/drbd :: ext3 :: defaults mysql
および/etc/ha.d/ha.cf
logfile/var/log/ha-log logfacilitylocal0 keepalive 1 deadtime 30 warntime 10 initdead 120 udpport 694 bcast eth0、eth4 auto_failback off ノードdb1 ノードdb2 respawn hacluster /usr/lib64/heartbeat/ipfail apiauth ipfail gid = haclient uid = hacluster デッドピング5
マシン間のフェイルオーバーをテストするときに、db2で次のコマンドを実行しました。
service heartbeat stop service mysqld stop drbdadm down mysql service drbd stop
db1の/ proc/drbdが報告されました
0:cs:Connected st:Primary/Unknown ds:UpToDate/DUnknown C r ---
次に何が起こったのか:
db1がDRBDディスクを再マウントし、正しいIPを想定して、MySQLを起動しました。 MySQLテーブルの大規模な破損がありました。それはすべて修正可能でした(InnoDBリカバリモード6、mysqlcheck、および時折のバックアップを使用)が、どのように発生しましたか?
私は推測します:
しばらくの間、このセットアップに再度アクセスできません。テストを繰り返したいと思います。
構成設定は正しいですか?
破損は手動テストの結果でしたか?
ハートビートサービスを停止してharesourcesコマンドを実行させるよりも、フェイルオーバーをテストするためのより良い方法はありますか?
私が読んだすべてのことと、ハートビートに関する私の限られた経験から、あるサーバーから別のサーバーに手動でフェイルオーバーするために必要なのは、
service heartbeat stop
コマンド。 haresourcesファイルにあるものはすべて、ハートビートによって制御されます。適切な例として、次のサービスを実行する必要があるクラスターをセットアップしています。
snmpd
mysql
これがharesourcesの設定です
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
そして、これが私が得た結果です(それが混乱している場合、私の謝罪、私は正しい場所で改行を得ることができません):
[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コマンドは実行しないでください。データの破損を回避できると思います。