DB2的Primary和Standby之间是通过发送心跳信号来检测对方是否存在的
与此心跳有关的几个db2pd -db xxx -hadr 监控指标
HEARTBEAT_INTERVAL(seconds) = 30
HEARTBEAT_MISSED = 0
HEARTBEAT_EXPECTED = 58588
HADR_TIMEOUT(seconds) = 120
需要查看的是 HEARTBEAT_MISSED/HEARTBEAT_EXPECTED的比值
HADR_TIMEOUT是DB CFG的一个参数,这里设置为 120
HEARTBEAT_INTERVAL 计算方法: HADR_TIMEOUT/4 = 120/4=30
HEARTBEAT_INTERVAL的最大值是 30秒
推荐的 hadr_timeout 参数设置至少为 60 秒。
HADR_TIMEOUT 推荐值是120 seconds. 计算以后 HEARTBEAT_INTERVAL 是 30 秒.
设置 hadr_timeout参数时,要考虑网络稳定性和机器响应时间。如果网络拥有不规则或长时间传输延迟,则应使用更长的超时设置。
每一次心跳,在Primary端都会产生一个 PEER_WINDOW_END值,并且发送到Standby端。
如果Primary端在 PEER_WINDOW_END之前失败,可以执行一个没有数据损失的故障转移 (TAKEOVER BY FORCE 命令添加了一个 PEER WINDOW ONLY 选项)
hadr_peer_window设置 >= 响应时间 + 安全 边际 + 心跳间隔
其中:
响应时间 = 自动化软件探测到失败并调用 HADR 接管的预计时间
安全边际 = 5 秒,主 - 备用机器时钟同步的安全边际
心跳间隔 = MIN(hadr_timeout值 /4,hadr_peer_window值 /4,30 秒)