[HeartBeat新手上路] -- 测试、后续

4. 测试

可以通过几种方式来模拟节点当掉:关闭网卡,iptables防火墙,当然了,也可以直接关机。由于ha.cf中指定是用bcast的方式来检测节点是否连通,因此采用iptables防火墙时,还需要把广播包给禁用了。

iptables -A input -m pkttype --pkt-type broadcast -j DROP

 

5. 后续

实际测试结果表明:如果采用myisam存储引擎,则在primary节点当掉的时候,总会丢失数据;而采用innodb存储引擎时,如果primary节点本身没有程序往本机写数据的话,那么基本上不会发生数据丢失;而如果primary节点本身有程序在写数据,则在当机瞬间,本机上的程序可能还会写入部分数据,而如果是其他主机程序连接过来的话,基本上不会发生丢数据的情况。
建议:在drbd+hb的环境中,最好是采用innodb存储引擎,并且设置innodb_flush_log_at_trx_commit = 1,这使得几乎每个提交的事务都能记录在 ib_logfile* 中,在 secondary 节点上能得到恢复,减小损失。

技术相关:

评论

在drbd+hb的环境中,最好是采用innodb存储引擎,我们在应用中进行过严格的测试,应用服务器不向primary节点写数据的话,不会发生数据丢失(在所有情况下:硬件宕机,数据库异常,操作系统异常);应用服务器向primary节点写数据的话,相关代码会等待ha完成切换再执行.drbd的超时时间很重要。如果切换时间较长的OLTP应用,出现过程序异常,需要修改程序才行。感觉这个方案对网站应用更安全一些。

HEARTBEAT+REPLICATION在OLTP应用硬件宕机时出现大量丢失数据的情况