
The master failure can now be verified by checking when the slaves are connected to the master. If the slaves do not receive any events from the master, the connections are considered as down after a configurable limit. Added two parameters for controlling whether the check is done and for how long the monitor waits before doing the failover.
82 lines
3.6 KiB
C
82 lines
3.6 KiB
C
#pragma once
|
|
#ifndef _MYSQLMON_H
|
|
#define _MYSQLMON_H
|
|
/*
|
|
* Copyright (c) 2016 MariaDB Corporation Ab
|
|
*
|
|
* Use of this software is governed by the Business Source License included
|
|
* in the LICENSE.TXT file and at www.mariadb.com/bsl11.
|
|
*
|
|
* Change Date: 2020-01-01
|
|
*
|
|
* On the date above, in accordance with the Business Source License, use
|
|
* of this software will be governed by version 2 or later of the General
|
|
* Public License.
|
|
*/
|
|
|
|
/**
|
|
* @file mysqlmon.h - The MySQL monitor
|
|
*/
|
|
|
|
#include <maxscale/cdefs.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <maxscale/monitor.h>
|
|
#include <maxscale/spinlock.h>
|
|
#include <maxscale/thread.h>
|
|
#include <mysql.h>
|
|
#include <mysqld_error.h>
|
|
#include <maxscale/log_manager.h>
|
|
#include <maxscale/secrets.h>
|
|
#include <maxscale/dcb.h>
|
|
#include <maxscale/modinfo.h>
|
|
#include <maxscale/config.h>
|
|
#include <maxscale/hashtable.h>
|
|
|
|
MXS_BEGIN_DECLS
|
|
|
|
/**
|
|
* The handle for an instance of a MySQL Monitor module
|
|
*/
|
|
typedef struct
|
|
{
|
|
THREAD thread; /**< Monitor thread */
|
|
int shutdown; /**< Flag to shutdown the monitor thread */
|
|
int status; /**< Monitor status */
|
|
unsigned long id; /**< Monitor ID */
|
|
int replicationHeartbeat; /**< Monitor flag for MySQL replication heartbeat */
|
|
bool detectStaleMaster; /**< Monitor flag for MySQL replication Stale Master detection */
|
|
bool detectStaleSlave; /**< Monitor flag for MySQL replication Stale Master detection */
|
|
bool multimaster; /**< Detect and handle multi-master topologies */
|
|
int disableMasterFailback; /**< Monitor flag for Galera Cluster Master failback */
|
|
int availableWhenDonor; /**< Monitor flag for Galera Cluster Donor availability */
|
|
int disableMasterRoleSetting; /**< Monitor flag to disable setting master role */
|
|
bool mysql51_replication; /**< Use MySQL 5.1 replication */
|
|
MXS_MONITORED_SERVER *master; /**< Master server for MySQL Master/Slave replication */
|
|
char* script; /**< Script to call when state changes occur on servers */
|
|
uint64_t events; /**< enabled events */
|
|
HASHTABLE *server_info; /**< Contains server specific information */
|
|
bool detect_standalone_master; /**< If standalone master are detected */
|
|
int failcount; /**< How many monitoring cycles servers must be
|
|
down before failover is initiated */
|
|
bool allow_cluster_recovery; /**< Allow failed servers to rejoin the cluster */
|
|
bool warn_set_standalone_master; /**< Log a warning when setting standalone master */
|
|
bool allow_external_slaves; /**< Whether to allow usage of external slave servers */
|
|
bool failover; /**< If master failover is enabled */
|
|
char* failover_script; /**< Script to call for performing master failover */
|
|
uint32_t failover_timeout; /**< Timeout in seconds for the master failover */
|
|
bool switchover; /**< If master switchover is enabled */
|
|
char* switchover_script; /**< Script to call for performing master switchover */
|
|
uint32_t switchover_timeout; /**< Timeout in seconds for the master switchover */
|
|
char* replication_user; /**< Replication user for failover */
|
|
char* replication_password; /**< Replication password for failover*/
|
|
bool verify_master_failure; /**< Whether master failure is verified via slaves */
|
|
int master_failure_timeout; /**< Time in seconds to wait before doing failover */
|
|
MXS_MONITOR* monitor;
|
|
} MYSQL_MONITOR;
|
|
|
|
MXS_END_DECLS
|
|
|
|
#endif
|