mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-19801: Change defaults for CHANGE MASTER TO so that GTID-based replication is used by default if master supports it
This commit makes replicas crash-safe by default by changing the Using_Gtid value to be Slave_Pos on a fresh slave start and after RESET SLAVE is issued. If the primary server does not support GTIDs (i.e., version < 10), the replica will fall back to Using_Gtid=No on slave start and after RESET SLAVE. The following additional informational messages/warnings are added: 1. When Using_Gtid is automatically changed. That is, if RESET SLAVE reverts Using_Gtid back to Slave_Pos, or Using_Gtid is inferred to No from a CHANGE MASTER TO given with log coordinates without MASTER_USE_GTID. 2. If options are ignored in CHANGE MASTER TO. If CHANGE MASTER TO is given with log coordinates, yet also specifies MASTER_USE_GTID=Slave_Pos, a warning message is given that the log coordinate options are ignored. Additionally, an MTR macro has been added for RESET SLAVE, reset_slave.inc, which provides modes/options for resetting a slave in log coordinate or gtid modes. When in log coordinates mode, the macro will execute CHANGE MASTER TO MASTER_USE_GTID=No after the RESET SLAVE command. When in GTID mode, an extra parameter, reset_slave_keep_gtid_state, can be set to reset or preserve the value of gtid_slave_pos. Reviewed By: =========== Andrei Elkin <andrei.elkin@mariadb.com>
This commit is contained in:
@@ -39,12 +39,12 @@ Master_info::Master_info(LEX_CSTRING *connection_name_arg,
|
||||
clock_diff_with_master(0),
|
||||
sync_counter(0), heartbeat_period(0), received_heartbeats(0),
|
||||
master_id(0), prev_master_id(0),
|
||||
using_gtid(USE_GTID_NO), events_queued_since_last_gtid(0),
|
||||
using_gtid(USE_GTID_SLAVE_POS), events_queued_since_last_gtid(0),
|
||||
gtid_reconnect_event_skip_count(0), gtid_event_seen(false),
|
||||
in_start_all_slaves(0), in_stop_all_slaves(0), in_flush_all_relay_logs(0),
|
||||
users(0), killed(0),
|
||||
total_ddl_groups(0), total_non_trans_groups(0), total_trans_groups(0),
|
||||
is_shutdown(false)
|
||||
is_shutdown(false), master_supports_gtid(true)
|
||||
{
|
||||
char *tmp;
|
||||
host[0] = 0; user[0] = 0; password[0] = 0;
|
||||
@@ -211,7 +211,10 @@ void init_master_log_pos(Master_info* mi)
|
||||
|
||||
mi->master_log_name[0] = 0;
|
||||
mi->master_log_pos = BIN_LOG_HEADER_SIZE; // skip magic number
|
||||
mi->using_gtid= Master_info::USE_GTID_NO;
|
||||
if (mi->master_supports_gtid)
|
||||
{
|
||||
mi->using_gtid= Master_info::USE_GTID_SLAVE_POS;
|
||||
}
|
||||
mi->gtid_current_pos.reset();
|
||||
mi->events_queued_since_last_gtid= 0;
|
||||
mi->gtid_reconnect_event_skip_count= 0;
|
||||
|
Reference in New Issue
Block a user