mariadb/sql/rpl_mi.h
unknown d6422f61ba Bug#19991 CHANGE MASTER need option ssl-verify-server-cert
- Add MASTER_SSL_VERIFY_SERVER_CERT option to CHANGE MASTER TO
 - Add Master_Ssl_Serify_Server_Cert to SHOW SLAVE STATUS
 - Save and restore ssl_verify_server_cert  to master info file
   setting it to disabled as default.


mysql-test/r/rpl_000015.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_change_master.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_empty_master_crash.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_flushlog_loop.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_loaddata.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_log_pos.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_rbr_to_sbr.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_redirect.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_replicate_do.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_rotate_logs.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_row_max_relay_size.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_server_id1.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_server_id2.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_slave_status.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_ssl1.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_stm_log.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_stm_max_relay_size.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_stm_reset_slave.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/r/rpl_stm_until.result:
  Update test result after adding new column to SHOW SLAVE STATUS
mysql-test/t/rpl_ssl1.test:
  Change to "query_vertical show slave status"
sql/lex.h:
  Add new token for MASTER_SSL_VERIFY_SERVER_CERT
sql/repl_failsafe.cc:
  Turn on verification of master cert if so requested
sql/rpl_mi.cc:
  Add new variable to MASTER_INFo and save/restore it from/to line 15 of master info
  file
sql/rpl_mi.h:
  Add variable for ssl_verify_server_cert to MASTER_INFO
sql/slave.cc:
  Turn on verification of master cert if so requested
  Add new column to SHOW  SLAVE STATUS
sql/sql_lex.h:
  Add ssl_verify_server_cert to "st_lex_master_info" struct - allow
  it to be UNCHANGED just like the ssl option.
sql/sql_repl.cc:
  Add ssl_verify_server_cert to "st_lex_master_info" struct - allow
  it to be UNCHANGED just like the ssl option.
sql/sql_yacc.yy:
  Add MASTER_SSL_VERIFY_SERVER_CERT to CHANGE MASTER TO
mysql-test/t/rpl_ssl_verify_server.test:
  New BitKeeper file ``mysql-test/t/rpl_ssl_verify_server.test''
mysql-test/r/rpl_ssl_verify_server.result:
  New BitKeeper file ``mysql-test/r/rpl_ssl_verify_server.result''
2007-03-29 15:09:57 +02:00

110 lines
3.5 KiB
C++

/* Copyright (C) 2000-2003 MySQL AB
This program 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 of the License.
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#ifndef RPL_MI_H
#define RPL_MI_H
#ifdef HAVE_REPLICATION
/*****************************************************************************
Replication IO Thread
MASTER_INFO contains:
- information about how to connect to a master
- current master log name
- current master log offset
- misc control variables
MASTER_INFO is initialized once from the master.info file if such
exists. Otherwise, data members corresponding to master.info fields
are initialized with defaults specified by master-* options. The
initialization is done through init_master_info() call.
The format of master.info file:
log_name
log_pos
master_host
master_user
master_pass
master_port
master_connect_retry
To write out the contents of master.info file to disk ( needed every
time we read and queue data from the master ), a call to
flush_master_info() is required.
To clean up, call end_master_info()
*****************************************************************************/
class MASTER_INFO
{
public:
MASTER_INFO();
~MASTER_INFO();
/* the variables below are needed because we can change masters on the fly */
char master_log_name[FN_REFLEN];
char host[HOSTNAME_LENGTH+1];
char user[USERNAME_LENGTH+1];
char password[MAX_PASSWORD_LENGTH+1];
my_bool ssl; // enables use of SSL connection if true
char ssl_ca[FN_REFLEN], ssl_capath[FN_REFLEN], ssl_cert[FN_REFLEN];
char ssl_cipher[FN_REFLEN], ssl_key[FN_REFLEN];
my_bool ssl_verify_server_cert;
my_off_t master_log_pos;
File fd; // we keep the file open, so we need to remember the file pointer
IO_CACHE file;
pthread_mutex_t data_lock,run_lock;
pthread_cond_t data_cond,start_cond,stop_cond;
THD *io_thd;
MYSQL* mysql;
uint32 file_id; /* for 3.23 load data infile */
RELAY_LOG_INFO rli;
uint port;
uint connect_retry;
#ifndef DBUG_OFF
int events_till_disconnect;
#endif
bool inited;
volatile bool abort_slave;
volatile uint slave_running;
volatile ulong slave_run_id;
/*
The difference in seconds between the clock of the master and the clock of
the slave (second - first). It must be signed as it may be <0 or >0.
clock_diff_with_master is computed when the I/O thread starts; for this the
I/O thread does a SELECT UNIX_TIMESTAMP() on the master.
"how late the slave is compared to the master" is computed like this:
clock_of_slave - last_timestamp_executed_by_SQL_thread - clock_diff_with_master
*/
long clock_diff_with_master;
};
void init_master_info_with_options(MASTER_INFO* mi);
int init_master_info(MASTER_INFO* mi, const char* master_info_fname,
const char* slave_info_fname,
bool abort_if_no_master_info_file,
int thread_mask);
void end_master_info(MASTER_INFO* mi);
int flush_master_info(MASTER_INFO* mi, bool flush_relay_log_cache);
#endif /* HAVE_REPLICATION */
#endif /* RPL_MI_H */