False Positive
failover-falsepositive-ping-counter (2.0) failcount (0.7)
| Item |
Value |
| Description |
Failover after this number of ping failures, interval is driven by failover-falsepositive-heartbeat. |
| Type |
integer |
| Default Value |
5 |
failover-falsepositive-heartbeat (1.1)
| Item |
Value |
| Description |
Cancel failover if one slave can still fetch events from the master. |
| Type |
boolean |
| Default Value |
true |
The failover is cancelled (ERR00028) while a direct replica of the master received something from it recently: a heartbeat when the master is idle, an event when it is busy. Recently means within the replica's heartbeat period + monitoring-ticker + failover-falsepositive-heartbeat-timeout. The check is read on the replication channel replication-manager manages (replication-source-name), and does not wait:
- MariaDB records no time of the last heartbeat, only a counter per channel (
Slave_received_heartbeats in SHOW ALL SLAVES STATUS): replication-manager notes the time it sees that counter, or the IO position, move at each monitoring tick.
- MySQL and Percona 5.7+ record the time of the last heartbeat (8.0: and of the last event received) in
performance_schema.replication_connection_status.
While the master is suspect or failed, each replica shows how long ago it last received from the master (CINF0022).
GUI: Settings, Failover, "Failover Cancelled While Replicas Receive" (failover-falsepositive-heartbeat) and "Failover Replica Receive Margin" (failover-falsepositive-heartbeat-timeout).
A master that is really dead stops sending: once its replicas' last receive is older than that window, the failover goes on. A failover decision therefore waits up to one heartbeat period: a replica whose heartbeat period is above force-slave-heartbeat-time, or off, raises WARN0050. Lower its period, or let force-slave-heartbeat set it.
Before replication-manager issue 2208 was fixed, this check read the global status Slave_received_heartbeats, which counts only MariaDB's default connection and does not exist on MySQL 5.7+: it never cancelled a failover on a named channel or on MySQL.
failover-falsepositive-heartbeat-timeout (1.1)
| Item |
Value |
| Description |
Margin in seconds added to the heartbeat period and monitoring-ticker for failover-falsepositive-heartbeat: a replica that received from the master within that window cancels the failover. |
| Type |
integer |
| Default Value |
3 |
failover-falsepositive-external (1.1)
| Item |
Value |
| Description |
Cancel failover when http call to host of the master port 80 return header response code 200 OK, some inetd scripts can be googled to make external monitoring. |
| Type |
boolean |
| Default Value |
false |
failover-falsepositive-external-port (1.1)
| Item |
Value |
| Description |
Custom TCP port for external check failover-falsepositive-external. |
| Type |
integer |
| Default Value |
80 |
failover-falsepositive-maxscale (1.1, 2.0-osc, 2.0-pro)
| Item |
Value |
| Description |
Cancel failover when maxscale monitor detect alive master. See the maxscale configuration section for more details |
| Type |
boolean |
| Default Value |
"false" |
failover-falsepositive-maxscale-timeout (1.1, 2.0-osc, 2.0-pro)
| Item |
Value |
| Description |
Failover wait this timer in second that MaxScale monitor detect the failed master for failover-falsepositive-maxscale. |
| Type |
integer |
| Default Value |
14 |