高可用性集群故障是指集群中数据库服务器之间的连接丢失,这可能是多种不同的情况造成的。
在正常的集群运行期间,数据库服务器预期集群中的其他数据库服务器进行通信确认。集群中的每个数据库服务器都有一个用于指定秒数的 ONCONFIG 参数 DRTIMEOUT。如果来自集群中另一数据库服务器的确认没有在 DRTIMEOUT 指定的秒数内返回,那么数据库服务器会假定发生了集群故障。
无论主数据库服务器是否向辅助数据库服务器发送任何记录,这两个数据库服务器均会互相执行 ping 操作。如果一个数据库服务器没有响应四次连续 ping 尝试,那么另一数据库服务器会假定发生了集群故障。
集群中每个数据库服务器会在该数据库服务器上 DRTIMEOUT 参数指定的秒数过去之后,向集群中的其他数据库服务器发送 ping。
数据库服务器检测到集群故障后,它会向其消息日志写入一条消息(例如,DR: receive error)并关闭数据复制。如果发生了集群故障,那么两个数据库服务器之间的连接将断开,并且辅助数据库服务器将保持只读方式。
如果辅助数据库服务器在集群故障后仍保持联机状态,并且 DRAUTO 配置参数设置为 1 (RETAIN_TYPE),那么该数据库服务器的类型将自动更改为标准。如果 DRAUTO 设置为 0 (off),那么辅助数据库服务器将顶事尝试重新建立与主数据库服务器的通信。如果 DRAUTO 设置为 2 (REVERSE_TYPE),那么一旦因原始主服务器发生故障(而非因原始主服务器重新启动)导致连接结束,辅助数据库服务器将立即成为主数据库服务器。
如果连接管理器已启用,那么将 DRAUTO 设置为 3 可防止高可用性集群中存在多个主服务器的可能性。 如果尝试使服务器联机以作为主服务器并且 DRAUTO=3,那么连接管理器将验证集群中没有其他活动的主服务器。如果另一台主服务器处于活动状态,那么连接管理器将拒绝该请求。