Server IP : 185.86.78.101 / Your IP : 216.73.216.124 Web Server : Apache System : Linux 675867-vds-valikoshka1996.gmhost.pp.ua 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:35:05 UTC 2023 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /www/server/mysql/mysql-test/extra/rpl_tests/ |
Upload File : |
# Proving that stopping in the middle of applying a group of events # does not have immediate effect if a non-transaction table has been changed. # The slave sql thread has to try to finish applying first. # The tests rely on simulation of the killed status. # The matter of testing correlates to some of `rpl_start_stop_slave' that does # not require `have_debug'. # Test group sematics and thereby failing in such group is bound to # the Single-Threaded Slave. -- source include/not_mts_slave_parallel_workers.inc -- source include/have_myisam.inc connection master; call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); create table tm (a int auto_increment primary key) engine=myisam; create table ti (a int auto_increment primary key) engine=innodb; sync_slave_with_master; set @@global.debug="+d,stop_slave_middle_group"; connection master; begin; insert into ti set a=null; insert into tm set a=null; # to simulate killed status on the slave commit; connection slave; call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group"); call mtr.add_suppression("Slave SQL.*Slave SQL Thread stopped with incomplete event group having non-transactional changes"); # slave will catch the killed status but won't shut down immediately # only after the whole group has done (commit) source include/wait_for_slave_sql_to_stop.inc; # checking: no error and the group is finished --source include/check_slave_no_error.inc --let $assert_text= Everything that was read, was executed --let $assert_cond= [SHOW SLAVE STATUS, Read_Master_Log_Pos, 1] = [SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1] --source include/assert.inc --let $assert_text= There is one row in table tm --let $assert_cond= [SELECT COUNT(*) AS Val FROM tm, Val, 1] = 1 --source include/assert.inc --let $assert_text= There is one row in table ti --let $assert_cond= [SELECT COUNT(*) AS Val FROM ti, Val, 1] = 1 --source include/assert.inc --source include/stop_slave.inc set @@global.debug="-d"; # # bug#45940 issues around rli->last_event_start_time # Testing of slave stopped after it had waited (in vain) for # the group be finished. # It could not be finished because of simulation of failure to # receive the terminal part # The test relay on simulation of the incomplete group in the relay log # Two cases are verified: a mixed transacton and a mixed multi-table update. # # The mixed transacton. # source include/start_slave.inc; connection master; truncate table tm; # cleanup of former tests truncate table ti; #connection slave; sync_slave_with_master; set @@global.debug="+d,stop_slave_middle_group"; set @@global.debug="+d,incomplete_group_in_relay_log"; connection master; begin; insert into ti set a=null; insert into tm set a=null; commit; connection slave; # slave will catch the killed status, won't shut down immediately # but does it eventually having the whole group unfinished (not committed) let $slave_sql_errno= 1593; # ER_SLAVE_FATAL_ERROR --let $show_slave_sql_error= 1 --source include/wait_for_slave_sql_error.inc # checking: the error and group unfinished --let $assert_text= Not everything that was read, was executed --let $assert_cond= [SHOW SLAVE STATUS, Read_Master_Log_Pos, 1] > [SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1] --source include/assert.inc --let $assert_text= There is one row in table tm --let $assert_cond= [SELECT COUNT(*) AS Val FROM tm, Val, 1] = 1 --source include/assert.inc --let $assert_text= There is no row in table ti --let $assert_cond= [SELECT COUNT(*) AS Val FROM ti, Val, 1] = 0 --source include/assert.inc --source include/stop_slave.inc set @@global.debug="-d"; # # The mixed multi-table update # # above tests for Bug#11765758 - 58754 made sure slave is down truncate table tm; source include/start_slave.inc; connection master; #connection slave; sync_slave_with_master; set @@global.debug="+d,stop_slave_middle_group"; set @@global.debug="+d,incomplete_group_in_relay_log"; connection master; update tm as t1, ti as t2 set t1.a=t1.a * 2, t2.a=t2.a * 2; connection slave; # slave will catch the killed status, won't shut down immediately # but does it eventually having the whole group unfinished (not committed) # # checking: the error and group unfinished let $slave_sql_errno= 1593; # ER_SLAVE_FATAL_ERROR --let $show_slave_sql_error= 1 --source include/wait_for_slave_sql_error.inc --let $assert_text= Not everything that was read, was executed --let $assert_cond= [SHOW SLAVE STATUS, Read_Master_Log_Pos, 1] > [SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1] --source include/assert.inc --let $assert_text= The max value for field 'a' is 2 --let $assert_cond= [SELECT MAX(a) AS Val FROM tm, Val, 1] = 2 --source include/assert.inc --let $assert_text= The max value for field 'a' is 1 --let $assert_cond= [SELECT MAX(a) AS Val FROM ti, Val, 1] = 1 --source include/assert.inc --source include/stop_slave.inc set @@global.debug="-d"; # # clean-up # # the sql thread has an error, so reset replication state --let $rpl_only_running_threads= 1 --source include/rpl_reset.inc connection master; drop table tm, ti; --sync_slave_with_master