1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
include/master-slave.inc
[connection master]
connection slave;
SET @old_innodb_flush_log_at_trx_commit= @@global.innodb_flush_log_at_trx_commit;
SET @@global.innodb_flush_log_at_trx_commit= 0;
connection master;
SET @old_innodb_flush_log_at_trx_commit= @@global.innodb_flush_log_at_trx_commit;
SET @@global.innodb_flush_log_at_trx_commit= 0;
SET @@session.binlog_direct_non_transactional_updates= FALSE;
connection master;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
connection slave;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
connection master;
create table t1(n int);
connection slave;
stop slave;
include/wait_for_slave_to_stop.inc
connection master;
connection slave;
start slave;
stop slave io_thread;
start slave io_thread;
include/wait_for_slave_to_start.inc
connection master;
drop table t1;
connection slave;
connection master;
create table t1i(n int primary key) engine=innodb;
create table t2m(n int primary key) engine=myisam;
begin;
insert into t1i values (1);
insert into t1i values (2);
insert into t1i values (3);
commit;
connection slave;
connection slave;
begin;
insert into t1i values (5);
connection master;
begin;
insert into t1i values (4);
insert into t2m values (1);
Warnings:
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it accesses a non-transactional table after accessing a transactional table within the same transaction
insert into t1i values (5);
commit;
connection slave;
zero
0
connection slave1;
stop slave;
connection slave;
rollback;
connection slave1;
include/wait_for_slave_to_stop.inc
*** sql thread is *not* running: No ***
connection master;
connection slave;
*** the prove: the stopped slave has finished the current transaction ***
five
5
zero
0
one
1
include/start_slave.inc
connection master;
drop table t1i, t2m;
connection slave;
#
# Bug#56096 STOP SLAVE hangs if executed in parallel with user sleep
#
connection master;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a INT );
connection slave;
connection slave1;
# lock table for synchronization
LOCK TABLES t1 WRITE;
connection master;
# insert into the table
INSERT INTO t1 SELECT SLEEP(4);
Warnings:
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave
connection slave;
# Slave: wait for the insert
# send slave stop
STOP SLAVE;
connection slave1;
# wait for stop slave
# Slave1: unlock the table
UNLOCK TABLES;
connection slave;
# wait for the slave to stop
include/wait_for_slave_to_stop.inc
# Start slave again
include/start_slave.inc
# Clean up
connection master;
DROP TABLE t1;
connection slave;
connection master;
RESET MASTER;
connection slave;
include/stop_slave.inc
CHANGE MASTER TO master_log_pos=MASTER_POS, master_use_gtid=no;
START SLAVE;
include/wait_for_slave_param.inc [Last_IO_Errno]
Last_IO_Errno = '1236'
Last_IO_Error = 'Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'master-bin.000001' at XXX, the last event read from 'master-bin.000001' at XXX, the last byte read from 'master-bin.000001' at XXX.''
include/stop_slave_sql.inc
RESET SLAVE;
Warnings:
Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
SET @@global.innodb_flush_log_at_trx_commit= @old_innodb_flush_log_at_trx_commit;
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");
connection master;
SET @@global.innodb_flush_log_at_trx_commit= @old_innodb_flush_log_at_trx_commit;
include/rpl_end.inc
|