mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
BUG#43406 CHANGE MASTER TO should log previous state in error log
When issuing a 'CHANGE MASTER TO' statement, key elements of the previous state, namely the host, port, the master_log_file and the master_log_pos are dumped into the error log.
This commit is contained in:
@ -1134,6 +1134,10 @@ bool change_master(THD* thd, Master_info* mi)
|
||||
int thread_mask;
|
||||
const char* errmsg= 0;
|
||||
bool need_relay_log_purge= 1;
|
||||
char saved_host[HOSTNAME_LENGTH + 1];
|
||||
uint saved_port;
|
||||
char saved_log_name[FN_REFLEN];
|
||||
my_off_t saved_log_pos;
|
||||
DBUG_ENTER("change_master");
|
||||
|
||||
lock_slave_threads(mi);
|
||||
@ -1162,6 +1166,17 @@ bool change_master(THD* thd, Master_info* mi)
|
||||
could possibly modify the data structures from running
|
||||
*/
|
||||
|
||||
/*
|
||||
Before processing the command, save the previous state.
|
||||
*/
|
||||
char *pos;
|
||||
pos= strmake(saved_host, mi->host, HOSTNAME_LENGTH);
|
||||
pos= '\0';
|
||||
saved_port= mi->port;
|
||||
pos= strmake(saved_log_name, mi->master_log_name, FN_REFLEN - 1);
|
||||
pos= '\0';
|
||||
saved_log_pos= mi->master_log_pos;
|
||||
|
||||
/*
|
||||
If the user specified host or port without binlog or position,
|
||||
reset binlog's name to FIRST and position to 4.
|
||||
@ -1325,6 +1340,15 @@ bool change_master(THD* thd, Master_info* mi)
|
||||
/* Clear the errors, for a clean start */
|
||||
mi->rli.clear_error();
|
||||
mi->rli.clear_until_condition();
|
||||
|
||||
sql_print_information("'CHANGE MASTER TO executed'. "
|
||||
"Previous state master_host='%s', master_port='%u', master_log_file='%s', "
|
||||
"master_log_pos='%ld'. "
|
||||
"New state master_host='%s', master_port='%u', master_log_file='%s', "
|
||||
"master_log_pos='%ld'.", saved_host, saved_port, saved_log_name,
|
||||
(ulong) saved_log_pos, mi->host, mi->port, mi->master_log_name,
|
||||
(ulong) mi->master_log_pos);
|
||||
|
||||
/*
|
||||
If we don't write new coordinates to disk now, then old will remain in
|
||||
relay-log.info until START SLAVE is issued; but if mysqld is shutdown
|
||||
|
Reference in New Issue
Block a user