diff --git a/mysql-test/suite/binlog/r/binlog_truncate_active_log.result b/mysql-test/suite/binlog/r/binlog_truncate_active_log.result index 85d37534c0b..53cfb9577d7 100644 --- a/mysql-test/suite/binlog/r/binlog_truncate_active_log.result +++ b/mysql-test/suite/binlog/r/binlog_truncate_active_log.result @@ -40,7 +40,7 @@ disconnect master1; disconnect master2; disconnect master3; disconnect master4; -# restart: --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 --log-warnings=3 +# restart: --init-rpl-role=SLAVE --sync-binlog=1 --log-warnings=3 FOUND 1 /Successfully truncated.*to remove transactions starting from GTID 0-1-7/ in mysqld.1.err Pre-crash binlog file content: include/show_binlog_events.inc @@ -104,7 +104,7 @@ disconnect master1; disconnect master2; disconnect master3; disconnect master4; -# restart: --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 --log-warnings=3 +# restart: --init-rpl-role=SLAVE --sync-binlog=1 --log-warnings=3 FOUND 1 /Successfully truncated.*to remove transactions starting from GTID 0-1-11/ in mysqld.1.err Pre-crash binlog file content: include/show_binlog_events.inc @@ -173,7 +173,7 @@ disconnect master1; disconnect master2; disconnect master3; disconnect master4; -# restart: --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 --log-warnings=3 +# restart: --init-rpl-role=SLAVE --sync-binlog=1 --log-warnings=3 FOUND 1 /Successfully truncated.*to remove transactions starting from GTID 0-1-15/ in mysqld.1.err Pre-crash binlog file content: include/show_binlog_events.inc @@ -248,7 +248,7 @@ disconnect master1; disconnect master2; disconnect master3; disconnect master4; -# restart: --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 --log-warnings=3 +# restart: --init-rpl-role=SLAVE --sync-binlog=1 --log-warnings=3 FOUND 1 /Successfully truncated.*to remove transactions starting from GTID 0-1-21/ in mysqld.1.err Pre-crash binlog file content: include/show_binlog_events.inc diff --git a/mysql-test/suite/binlog/r/binlog_truncate_multi_engine.result b/mysql-test/suite/binlog/r/binlog_truncate_multi_engine.result index 8425e0ad17a..4ace60ab39e 100644 --- a/mysql-test/suite/binlog/r/binlog_truncate_multi_engine.result +++ b/mysql-test/suite/binlog/r/binlog_truncate_multi_engine.result @@ -31,9 +31,9 @@ Log_name File_size master-bin.000001 # master-bin.000002 # master-bin.000003 # -# restart the server with --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 +# restart the server with --init-rpl-role=SLAVE --sync-binlog=1 # the server is restarted -# restart: --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 +# restart: --init-rpl-role=SLAVE --sync-binlog=1 connection default; # # *** Summary: 1 row should be present in both tables; binlog is truncated; number of binlogs at reconnect - 3: @@ -98,7 +98,7 @@ INSERT INTO t2 VALUES (2, REPEAT("x", 4100)); INSERT INTO t1 VALUES (2, REPEAT("x", 4100)); COMMIT; connection default; -# restart: --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 +# restart: --init-rpl-role=SLAVE --sync-binlog=1 connection default; # # *** Summary: 2 rows should be present in both tables; no binlog truncation; one extra binlog file compare with A; number of binlogs at reconnect - 4: @@ -155,9 +155,9 @@ Log_name File_size master-bin.000001 # master-bin.000002 # master-bin.000003 # -# restart the server with --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 +# restart the server with --init-rpl-role=SLAVE --sync-binlog=1 # the server is restarted -# restart: --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 +# restart: --init-rpl-role=SLAVE --sync-binlog=1 connection default; # # *** Summary: 2 rows should be present in both tables; no binlog truncation; the same # of binlog files as in B; number of binlogs at reconnect - 4: diff --git a/mysql-test/suite/binlog/r/binlog_truncate_multi_log.result b/mysql-test/suite/binlog/r/binlog_truncate_multi_log.result index 271e3c50b19..7d128c71941 100644 --- a/mysql-test/suite/binlog/r/binlog_truncate_multi_log.result +++ b/mysql-test/suite/binlog/r/binlog_truncate_multi_log.result @@ -42,7 +42,7 @@ connection default; disconnect master1; disconnect master2; disconnect master3; -# restart: --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 --log-warnings=3 +# restart: --init-rpl-role=SLAVE --sync-binlog=1 --log-warnings=3 FOUND 1 /truncated binlog file:.*master.*000002/ in mysqld.1.err "One record should be present in table" SELECT * FROM ti; diff --git a/mysql-test/suite/binlog/t/binlog_truncate_active_log.inc b/mysql-test/suite/binlog/t/binlog_truncate_active_log.inc index 68ac752725e..050e4ad8665 100644 --- a/mysql-test/suite/binlog/t/binlog_truncate_active_log.inc +++ b/mysql-test/suite/binlog/t/binlog_truncate_active_log.inc @@ -42,7 +42,7 @@ SELECT @@global.gtid_binlog_pos as 'Before the crash and never logged trx'; # # Server restart # ---let $restart_parameters= --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 --log-warnings=3 +--let $restart_parameters= --init-rpl-role=SLAVE --sync-binlog=1 --log-warnings=3 --source include/start_mysqld.inc # Check error log for a successful truncate message. diff --git a/mysql-test/suite/binlog/t/binlog_truncate_active_log.test b/mysql-test/suite/binlog/t/binlog_truncate_active_log.test index 7c63a853da6..e288aa47660 100644 --- a/mysql-test/suite/binlog/t/binlog_truncate_active_log.test +++ b/mysql-test/suite/binlog/t/binlog_truncate_active_log.test @@ -36,7 +36,7 @@ CREATE TABLE tm (f INT) ENGINE=Aria; # Using 'debug_sync' hold 'query1' execution after 'query1' is flushed and # synced to binary log but not yet committed. In an another connection hold # 'query2' execution after 'query2' is flushed and synced to binlog. -# Crash and restart server with --rpl-semi-sync-slave-enabled=1 +# Crash and restart server with --init-rpl-role=SLAVE # # During recovery of binary log 'query1' status is checked with InnoDB engine, # it will be in prepared but not yet commited. All transactions starting from diff --git a/mysql-test/suite/binlog/t/binlog_truncate_multi_engine.test b/mysql-test/suite/binlog/t/binlog_truncate_multi_engine.test index 12b0a743916..244bba2bc9b 100644 --- a/mysql-test/suite/binlog/t/binlog_truncate_multi_engine.test +++ b/mysql-test/suite/binlog/t/binlog_truncate_multi_engine.test @@ -28,7 +28,7 @@ CREATE TABLE t2 (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=rocksdb; # The transaction is killed along with the server after that. --let $shutdown_timeout=0 --let $debug_sync_action = "commit_after_release_LOCK_log SIGNAL con1_ready WAIT_FOR signal_no_signal" ---let $restart_parameters = --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 +--let $restart_parameters = --init-rpl-role=SLAVE --sync-binlog=1 --let $test_outcome= 1 row should be present in both tables; binlog is truncated; number of binlogs at reconnect - 3 --source binlog_truncate_multi_engine.inc --echo Proof of the truncated binlog file is readable (two transactions must be seen): @@ -41,7 +41,7 @@ CREATE TABLE t2 (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=rocksdb; --let $debug_sync_action = "" # Both debug_sync and debug-dbug are required to make sure Engines remember the commit state # debug_sync alone will not help. ---let $restart_parameters = --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 +--let $restart_parameters = --init-rpl-role=SLAVE --sync-binlog=1 --let $test_outcome= 2 rows should be present in both tables; no binlog truncation; one extra binlog file compare with A; number of binlogs at reconnect - 4 --source binlog_truncate_multi_engine.inc @@ -50,7 +50,7 @@ CREATE TABLE t2 (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=rocksdb; --let $debug_sync_action = "commit_after_run_commit_ordered SIGNAL con1_ready" # Hold off after both engines have committed. The server is shut down. --let $shutdown_timeout= ---let $restart_parameters = --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 +--let $restart_parameters = --init-rpl-role=SLAVE --sync-binlog=1 --let $test_outcome= 2 rows should be present in both tables; no binlog truncation; the same # of binlog files as in B; number of binlogs at reconnect - 4 --source binlog_truncate_multi_engine.inc diff --git a/mysql-test/suite/binlog/t/binlog_truncate_multi_log.test b/mysql-test/suite/binlog/t/binlog_truncate_multi_log.test index 079c79b2984..18aa2ff060a 100644 --- a/mysql-test/suite/binlog/t/binlog_truncate_multi_log.test +++ b/mysql-test/suite/binlog/t/binlog_truncate_multi_log.test @@ -63,7 +63,7 @@ SELECT @@global.gtid_binlog_state; # # Server restart # ---let $restart_parameters= --rpl-semi-sync-slave-enabled=1 --sync-binlog=1 --log-warnings=3 +--let $restart_parameters= --init-rpl-role=SLAVE --sync-binlog=1 --log-warnings=3 --source include/start_mysqld.inc # Check error log for a successful truncate message. diff --git a/mysql-test/suite/binlog/t/binlog_truncate_multi_log_unsafe.test b/mysql-test/suite/binlog/t/binlog_truncate_multi_log_unsafe.test index 5a5cc66742b..07f4e6a23dd 100644 --- a/mysql-test/suite/binlog/t/binlog_truncate_multi_log_unsafe.test +++ b/mysql-test/suite/binlog/t/binlog_truncate_multi_log_unsafe.test @@ -92,7 +92,7 @@ SELECT @@global.gtid_binlog_state; # --echo # Failed restart as the semisync slave --error 1 ---exec $MYSQLD_LAST_CMD --rpl-semi-sync-slave-enabled=1 >> $MYSQLTEST_VARDIR/log/mysqld.1.err 2>&1 +--exec $MYSQLD_LAST_CMD --init-rpl-role=SLAVE >> $MYSQLTEST_VARDIR/log/mysqld.1.err 2>&1 --echo # Normal restart --source include/start_mysqld.inc diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync_fail_over.result b/mysql-test/suite/rpl/r/rpl_semi_sync_fail_over.result index 49fdb485c50..b6f3bf3c293 100644 --- a/mysql-test/suite/rpl/r/rpl_semi_sync_fail_over.result +++ b/mysql-test/suite/rpl/r/rpl_semi_sync_fail_over.result @@ -50,7 +50,7 @@ on slave must be 2 SELECT @@GLOBAL.gtid_current_pos; @@GLOBAL.gtid_current_pos 0-1-4 -# restart: --skip-slave-start=1 --rpl-semi-sync-slave-enabled=1 +# restart: --skip-slave-start=1 --rpl-semi-sync-slave-enabled=1 --init-rpl-role=SLAVE connection server_1; # Ensuring variable rpl_semi_sync_slave_enabled is ON.. # Ensuring status rpl_semi_sync_slave_status is OFF.. @@ -136,7 +136,7 @@ on slave must be 5 SELECT @@GLOBAL.gtid_current_pos; @@GLOBAL.gtid_current_pos 0-2-7 -# restart: --skip-slave-start=1 --rpl-semi-sync-slave-enabled=1 +# restart: --skip-slave-start=1 --rpl-semi-sync-slave-enabled=1 --init-rpl-role=SLAVE connection server_2; # Ensuring variable rpl_semi_sync_slave_enabled is ON.. # Ensuring status rpl_semi_sync_slave_status is OFF.. @@ -221,7 +221,7 @@ on slave must be 7 SELECT @@GLOBAL.gtid_current_pos; @@GLOBAL.gtid_current_pos 0-1-9 -# restart: --skip-slave-start=1 --rpl-semi-sync-slave-enabled=1 +# restart: --skip-slave-start=1 --rpl-semi-sync-slave-enabled=1 --init-rpl-role=SLAVE connection server_1; # Ensuring variable rpl_semi_sync_slave_enabled is ON.. # Ensuring status rpl_semi_sync_slave_status is OFF.. diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_crash.inc b/mysql-test/suite/rpl/t/rpl_semi_sync_crash.inc index bb705d390ac..7ebeeb9f7ee 100644 --- a/mysql-test/suite/rpl/t/rpl_semi_sync_crash.inc +++ b/mysql-test/suite/rpl/t/rpl_semi_sync_crash.inc @@ -74,7 +74,7 @@ source include/wait_for_slave_param.inc; SELECT @@GLOBAL.gtid_current_pos; ---let $restart_parameters=--skip-slave-start=1 --rpl-semi-sync-slave-enabled=1 +--let $restart_parameters=--skip-slave-start=1 --rpl-semi-sync-slave-enabled=1 --init-rpl-role=SLAVE --let $allow_rpl_inited=1 --source include/start_mysqld.inc --connection server_$server_to_crash diff --git a/sql/log.cc b/sql/log.cc index 28954992a9a..425ec9421d4 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -40,6 +40,7 @@ #include "sql_audit.h" #include "mysqld.h" #include "ddl_log.h" +#include "repl_failsafe.h" #include #include // For test_if_number @@ -11025,7 +11026,7 @@ Recovery_context::Recovery_context() : prev_event_pos(0), last_gtid_standalone(false), last_gtid_valid(false), last_gtid_no2pc(false), last_gtid_engines(0), - do_truncate(global_rpl_semi_sync_slave_enabled), + do_truncate(rpl_status == RPL_IDLE_SLAVE), truncate_validated(false), truncate_reset_done(false), truncate_set_in_1st(false), id_binlog(MAX_binlog_id), checksum_alg(BINLOG_CHECKSUM_ALG_UNDEF), gtid_maybe_to_truncate(NULL) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index e3c37d0baad..177dcca8f69 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -6627,7 +6627,7 @@ struct my_option my_long_options[]= #ifdef HAVE_REPLICATION {"init-rpl-role", 0, "Set the replication role", &rpl_status, &rpl_status, &rpl_role_typelib, - GET_ENUM, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + GET_ENUM, REQUIRED_ARG, RPL_AUTH_MASTER, 0, 0, 0, 0, 0}, #endif /* HAVE_REPLICATION */ {"memlock", 0, "Lock mysqld in memory.", &locked_in_memory, &locked_in_memory, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},