mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Final push for WL#1098:
"Add a column "Timestamp_of_last_master_event_executed" in SHOW SLAVE STATUS". Finally this is adding - Slave_IO_State (a copy of the State column of SHOW PROCESSLIST for the I/O thread, so that the users, most of the time, has enough info with only SHOW SLAVE STATUS). - Seconds_behind_master. When the slave connects to the master it does SELECT UNIX_TIMESTAMP() on the master, computes the absolute difference between the master's and the slave's clock. It records the timestamp of the last event executed by the SQL thread, and does a small computation to find the number of seconds by which the slave is late. mysql-test/r/rpl000015.result: result update mysql-test/r/rpl_empty_master_crash.result: result update mysql-test/r/rpl_error_ignored_table.result: result update mysql-test/r/rpl_flush_log_loop.result: result update mysql-test/r/rpl_loaddata.result: result update mysql-test/r/rpl_log.result: result update mysql-test/r/rpl_log_pos.result: result update mysql-test/r/rpl_max_relay_size.result: result update mysql-test/r/rpl_redirect.result: result update mysql-test/r/rpl_replicate_do.result: result update mysql-test/r/rpl_reset_slave.result: result update mysql-test/r/rpl_rotate_logs.result: result update mysql-test/r/rpl_trunc_binlog.result: result update mysql-test/r/rpl_until.result: result update mysql-test/t/rpl000015.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_empty_master_crash.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_error_ignored_table.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_flush_log_loop.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_loaddata.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_log.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_log_pos.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_max_relay_size.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_openssl.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_redirect.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_replicate_do.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_reset_slave.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_rotate_logs.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_trunc_binlog.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS mysql-test/t/rpl_until.test: update to be independant of the new column Seconds_behind_master in SHOW SLAVE STATUS sql/log_event.cc: when the SQL thread executes an event, we record its timestamp sql/slave.cc: in check_master_version() we know read the master's clock, to know the clock difference with the slave. In show_master_info() we send the state of the I/O thread, and compute the number of seconds by which the slave is late. sql/slave.h: timestamp of the last master's event executed by the SQL thread, and difference between the clocks of the master and slave. sql/sql_repl.cc: clear the Seconds_behind_master column of SHOW SLAVE STATUS when RESET SLAVE or CHANGE MASTER.
This commit is contained in:
@@ -878,7 +878,11 @@ int reset_slave(THD *thd, MASTER_INFO* mi)
|
||||
STATUS; before doing START SLAVE;
|
||||
*/
|
||||
init_master_info_with_options(mi);
|
||||
clear_last_slave_error(&mi->rli);
|
||||
/*
|
||||
Reset errors, and master timestamp (the idea is that we forget about the
|
||||
old master).
|
||||
*/
|
||||
clear_slave_error_timestamp(&mi->rli);
|
||||
clear_until_condition(&mi->rli);
|
||||
|
||||
// close master_info_file, relay_log_info_file, set mi->inited=rli->inited=0
|
||||
@@ -1092,8 +1096,8 @@ int change_master(THD* thd, MASTER_INFO* mi)
|
||||
|
||||
pthread_mutex_lock(&mi->rli.data_lock);
|
||||
mi->rli.abort_pos_wait++; /* for MASTER_POS_WAIT() to abort */
|
||||
/* Clear the error, for a clean start. */
|
||||
clear_last_slave_error(&mi->rli);
|
||||
/* Clear the errors, for a clean start, and master timestamp */
|
||||
clear_slave_error_timestamp(&mi->rli);
|
||||
clear_until_condition(&mi->rli);
|
||||
/*
|
||||
If we don't write new coordinates to disk now, then old will remain in
|
||||
|
Reference in New Issue
Block a user