MXS-1495: Add failover sanity check
The sanity check disables the failover functionality if a server is configured to replicate from more than one source.
This commit is contained in:
@ -1664,6 +1664,25 @@ void do_failover(MYSQL_MONITOR *handle, MXS_MONITORED_SERVER *db)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool failover_not_possible(MYSQL_MONITOR* handle)
|
||||||
|
{
|
||||||
|
bool rval = false;
|
||||||
|
|
||||||
|
for (MXS_MONITORED_SERVER* s = handle->monitor->monitored_servers; s; s = s->next)
|
||||||
|
{
|
||||||
|
MYSQL_SERVER_INFO* info = get_server_info(handle, s);
|
||||||
|
|
||||||
|
if (info->n_slaves_configured > 1)
|
||||||
|
{
|
||||||
|
MXS_ERROR("Server '%s' is configured to replicate from multiple "
|
||||||
|
"masters, failover is not possible.", s->server->unique_name);
|
||||||
|
rval = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return rval;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The entry point for the monitoring module thread
|
* The entry point for the monitoring module thread
|
||||||
*
|
*
|
||||||
@ -1966,7 +1985,17 @@ monitorMain(void *arg)
|
|||||||
failover_script = DEFAULT_FAILOVER_SCRIPT;
|
failover_script = DEFAULT_FAILOVER_SCRIPT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mon_process_failover(mon, failover_script, handle->failover_timeout))
|
if (failover_not_possible(handle))
|
||||||
|
{
|
||||||
|
MXS_ERROR("Failover is not possible due to one or more problems in "
|
||||||
|
"the replication configuration, disabling failover. "
|
||||||
|
"Failover should only be enabled after the replication "
|
||||||
|
"configuration has been fixed. To re-enable failover "
|
||||||
|
"functionality, manually set '%s' to 'true' for monitor "
|
||||||
|
"'%s' via MaxAdmin or the REST API.", CN_FAILOVER, mon->name);
|
||||||
|
handle->failover = false;
|
||||||
|
}
|
||||||
|
else if (!mon_process_failover(mon, failover_script, handle->failover_timeout))
|
||||||
{
|
{
|
||||||
MXS_ALERT("Failed to perform failover, disabling failover functionality. "
|
MXS_ALERT("Failed to perform failover, disabling failover functionality. "
|
||||||
"To enable failover functionality, manually set 'failover' to "
|
"To enable failover functionality, manually set 'failover' to "
|
||||||
|
Reference in New Issue
Block a user