91 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef _MYSQLMON_H
 | 
						|
#define _MYSQLMON_H
 | 
						|
/*
 | 
						|
 * This file is distributed as part of the MariaDB Corporation MaxScale.  It is free
 | 
						|
 * software: you can redistribute it and/or modify it under the terms of the
 | 
						|
 * GNU General Public License as published by the Free Software Foundation,
 | 
						|
 * version 2.
 | 
						|
 *
 | 
						|
 * This program is distributed in the hope that it will be useful, but WITHOUT
 | 
						|
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 | 
						|
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 | 
						|
 * details.
 | 
						|
 *
 | 
						|
 * You should have received a copy of the GNU General Public License along with
 | 
						|
 * this program; if not, write to the Free Software Foundation, Inc., 51
 | 
						|
 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | 
						|
 *
 | 
						|
 * Copyright MariaDB Corporation Ab 2013-2014
 | 
						|
 */
 | 
						|
#include	<server.h>
 | 
						|
#include	<spinlock.h>
 | 
						|
#include	<mysql.h>
 | 
						|
 | 
						|
/**
 | 
						|
 * @file mysqlmon.h - The MySQL monitor functionality within the gateway
 | 
						|
 *
 | 
						|
 * @verbatim
 | 
						|
 * Revision History
 | 
						|
 *
 | 
						|
 * Date		Who			Description
 | 
						|
 * 08/07/13	Mark Riddoch		Initial implementation
 | 
						|
 * 26/05/14	Massimiliano	Pinto	Default values for MONITOR_INTERVAL
 | 
						|
 * 28/05/14	Massimiliano	Pinto	Addition of new fields in MYSQL_MONITOR struct
 | 
						|
 * 24/06/14	Massimiliano	Pinto	Addition of master field in MYSQL_MONITOR struct and MONITOR_MAX_NUM_SLAVES
 | 
						|
 * 28/08/14	Massimiliano	Pinto	Addition of detectStaleMaster
 | 
						|
 * 30/10/14	Massimiliano	Pinto	Addition of disableMasterFailback
 | 
						|
 * 07/11/14	Massimiliano	Pinto	Addition of NetworkTimeout: connect, read, write
 | 
						|
 *
 | 
						|
 * @endverbatim
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * The linked list of servers that are being monitored by the MySQL 
 | 
						|
 * Monitor module.
 | 
						|
 */
 | 
						|
typedef struct monitor_servers {
 | 
						|
	SERVER		*server;	/**< The server being monitored */
 | 
						|
	MYSQL		*con;		/**< The MySQL connection */
 | 
						|
	int		mon_err_count;
 | 
						|
	unsigned int	mon_prev_status;
 | 
						|
	unsigned int	pending_status; /**< Pending Status flag bitmap */	
 | 
						|
	struct monitor_servers
 | 
						|
			*next;		/**< The next server in the list */
 | 
						|
} MONITOR_SERVERS;
 | 
						|
 | 
						|
/**
 | 
						|
 * The handle for an instance of a MySQL Monitor module
 | 
						|
 */
 | 
						|
typedef struct {
 | 
						|
	SPINLOCK  lock;			/**< The monitor spinlock */
 | 
						|
	pthread_t tid;			/**< id of monitor thread */ 
 | 
						|
	int    	  shutdown;		/**< Flag to shutdown the monitor thread */
 | 
						|
	int       status;		/**< Monitor status */
 | 
						|
	char      *defaultUser;		/**< Default username for monitoring */
 | 
						|
	char      *defaultPasswd;	/**< Default password for monitoring */
 | 
						|
	unsigned long   interval;	/**< Monitor sampling interval */
 | 
						|
	unsigned long         id;	/**< Monitor ID */
 | 
						|
	int	replicationHeartbeat;	/**< Monitor flag for MySQL replication heartbeat */
 | 
						|
	int	detectStaleMaster;	/**< Monitor flag for MySQL replication Stale Master detection */
 | 
						|
	int	disableMasterFailback;	/**< Monitor flag for Galera Cluster Master failback */
 | 
						|
	MONITOR_SERVERS *master;	/**< Master server for MySQL Master/Slave replication */
 | 
						|
	MONITOR_SERVERS	*databases;     /**< Linked list of servers to monitor */
 | 
						|
	int	connect_timeout;	/**< Connect timeout in seconds for mysql_real_connect */
 | 
						|
	int	read_timeout;		/**< Timeout in seconds to read from the server.
 | 
						|
					 * There are retries and the total effective timeout value is three times the option value.
 | 
						|
					 */
 | 
						|
	int	write_timeout;		/**< Timeout in seconds for each attempt to write to the server.
 | 
						|
					 * There are retries and the total effective timeout value is two times the option value.
 | 
						|
					 */
 | 
						|
} MYSQL_MONITOR;
 | 
						|
 | 
						|
#define MONITOR_RUNNING		1
 | 
						|
#define MONITOR_STOPPING	2
 | 
						|
#define MONITOR_STOPPED		3
 | 
						|
 | 
						|
#define MONITOR_INTERVAL 10000 // in milliseconds
 | 
						|
#define MONITOR_DEFAULT_ID 1UL // unsigned long value
 | 
						|
#define MONITOR_MAX_NUM_SLAVES 20 //number of MySQL slave servers associated to a MySQL master server
 | 
						|
 | 
						|
#endif
 |