127 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
Copyright (C) 2013-2014, MariaDB Corporation Ab
 | 
						|
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
Author: Jan Lindström jan.lindstrom@mariadb.com
 | 
						|
Created: 15-07-2013
 | 
						|
Updated:
 | 
						|
*/
 | 
						|
 | 
						|
#ifndef TABLE_REPLICATION_METADATA_H
 | 
						|
#define TABLE_REPLICATION_METADATA_H
 | 
						|
 | 
						|
namespace mysql {
 | 
						|
 | 
						|
namespace table_replication_metadata {
 | 
						|
 | 
						|
 | 
						|
/* Structure definition for table replication consistency metadata */
 | 
						|
typedef struct {
 | 
						|
	unsigned char* db_table;         /* Fully qualified db.table name,
 | 
						|
					 primary key. */
 | 
						|
	boost::uint32_t server_id;       /* Server id */
 | 
						|
	unsigned char* gtid;             /* Global transaction id */
 | 
						|
	boost::uint32_t gtid_len;        /* Length of gtid */
 | 
						|
	boost::uint64_t binlog_pos;      /* Binlog position */
 | 
						|
	bool gtid_known;                 /* Is gtid known ? */
 | 
						|
} tbr_metadata_t;
 | 
						|
 | 
						|
/* Structure definition for table replication server metadata */
 | 
						|
typedef struct {
 | 
						|
	boost::uint32_t server_id;       /* Server id, primary key*/
 | 
						|
	boost::uint64_t binlog_pos;      /* Last executed binlog position */
 | 
						|
	unsigned char* gtid;             /* Last executed global transaction
 | 
						|
					 id if known */
 | 
						|
	boost::uint32_t gtid_len;        /* Actual length of gtid */
 | 
						|
	bool gtid_known;                 /* 1 if gtid known, 0 if not */
 | 
						|
	boost::uint32_t server_type;     /* server type */
 | 
						|
 } tbr_server_t;
 | 
						|
 | 
						|
// Not really nice, but currently we support only these two
 | 
						|
// server types.
 | 
						|
enum trc_server_type { TRC_SERVER_TYPE_MARIADB = 1, TRC_SERVER_TYPE_MYSQL = 2 };
 | 
						|
 | 
						|
 | 
						|
/***********************************************************************//**
 | 
						|
Read table replication consistency metadata from the MySQL master server.
 | 
						|
This function assumes that necessary database and table are created.
 | 
						|
@return false if read failed, true if read succeeded */
 | 
						|
bool
 | 
						|
tbrm_read_consistency_metadata(
 | 
						|
/*===========================*/
 | 
						|
	const char *master_host,    /*!< in: Master hostname */
 | 
						|
	const char *user,           /*!< in: username */
 | 
						|
	const char *passwd,         /*!< in: password */
 | 
						|
	unsigned int master_port,   /*!< in: master port */
 | 
						|
	tbr_metadata_t **tbrm_meta, /*!< out: table replication consistency
 | 
						|
				    metadata. */
 | 
						|
	size_t *tbrm_rows);        /*!< out: number of rows read */
 | 
						|
 | 
						|
/***********************************************************************//**
 | 
						|
Read table replication server metadata from the MySQL master server.
 | 
						|
This function assumes that necessary database and table are created.
 | 
						|
@return false if read failed, true if read succeeded */
 | 
						|
bool
 | 
						|
tbrm_read_server_metadata(
 | 
						|
/*======================*/
 | 
						|
	const char *master_host,    /*!< in: Master hostname */
 | 
						|
	const char *user,           /*!< in: username */
 | 
						|
	const char *passwd,         /*!< in: password */
 | 
						|
	unsigned int master_port,   /*!< in: master port */
 | 
						|
	tbr_server_t **tbrm_server, /*!< out: table replication server
 | 
						|
				    metadata. */
 | 
						|
	size_t *tbrm_rows);        /*!< out: number of rows read */
 | 
						|
 | 
						|
/***********************************************************************//**
 | 
						|
Write table replication consistency metadata from the MySQL master server.
 | 
						|
This function assumes that necessary database and table are created.
 | 
						|
@return false if read failed, true if read succeeded */
 | 
						|
bool
 | 
						|
tbrm_write_consistency_metadata(
 | 
						|
/*============================*/
 | 
						|
	const char *master_host,    /*!< in: Master hostname */
 | 
						|
	const char *user,           /*!< in: username */
 | 
						|
	const char *passwd,         /*!< in: password */
 | 
						|
	unsigned int master_port,   /*!< in: master port */
 | 
						|
	tbr_metadata_t **tbrm_meta, /*!< in: table replication consistency
 | 
						|
				    metadata. */
 | 
						|
	size_t tbrm_rows);          /*!< in: number of rows read */
 | 
						|
 | 
						|
/***********************************************************************//**
 | 
						|
Write table replication server metadata from the MySQL master server.
 | 
						|
This function assumes that necessary database and table are created.
 | 
						|
@return false if read failed, true if read succeeded */
 | 
						|
bool
 | 
						|
tbrm_write_server_metadata(
 | 
						|
/*=======================*/
 | 
						|
	const char *master_host,    /*!< in: Master hostname */
 | 
						|
	const char *user,           /*!< in: username */
 | 
						|
	const char *passwd,         /*!< in: password */
 | 
						|
	unsigned int master_port,   /*!< in: master port */
 | 
						|
	tbr_server_t **tbrm_server, /*!< out: table replication server
 | 
						|
				    metadata. */
 | 
						|
	size_t     tbrm_rows);      /*!< out: number of rows read */
 | 
						|
 | 
						|
 | 
						|
} // table_replication_metadata
 | 
						|
 | 
						|
} // mysql
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
 |