summaryrefslogtreecommitdiff
path: root/mysql-test/suite/rpl/t/rpl_gtid_errorlog.test
blob: ea3210621001d94acc68b40cfcb46a773c4ca9df (plain)
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
--source include/have_debug.inc
--source include/master-slave.inc

connection master;
SET GLOBAL BINLOG_CHECKSUM=NONE;
connection slave;
SET GLOBAL BINLOG_CHECKSUM=NONE;

--echo *** Test MDEV-6120, output of current GTID when a replication error is logged to the errorlog ***
--connection master
CREATE TABLE t1(a INT PRIMARY KEY);
--sync_slave_with_master

--connection slave
--source include/stop_slave.inc
CHANGE MASTER TO master_use_gtid=slave_pos;

--connection master
INSERT INTO t1 VALUES (1);
SET gtid_seq_no=100;
INSERT INTO t1 VALUES (2);
INSERT INTO t1 VALUES (3);
INSERT INTO t1 VALUES (4);
--save_master_pos

--connection slave
SET sql_log_bin=0;
INSERT INTO t1 VALUES (2);
SET sql_log_bin=1;

START SLAVE;
--let $slave_sql_errno=1062
--source include/wait_for_slave_sql_error.inc

--source include/stop_slave.inc
# Skip the problem event from the master.
SET GLOBAL gtid_slave_pos= "0-1-100";
--source include/start_slave.inc
--sync_with_master

SELECT * FROM t1 ORDER BY a;

--connection master

SET @dbug_save= @@debug_dbug;
SET debug_dbug= '+d,incident_database_resync_on_replace';
REPLACE INTO t1 VALUES (5);
SET debug_dbug= @dbug_save;
--save_master_pos

--connection slave
--let $slave_sql_errno=1590
--source include/wait_for_slave_sql_error.inc
--source include/stop_slave.inc
SET sql_slave_skip_counter=1;
--source include/start_slave.inc
--sync_with_master

SELECT * FROM t1 ORDER BY a;


# Check error log for correct messages.
let $log_error_= `SELECT @@GLOBAL.log_error`;
if(!$log_error_)
{
    # MySQL Server on windows is started with --console and thus
    # does not know the location of its .err log, use default location
    let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.2.err;
}
--let SEARCH_FILE=$log_error_
--let SEARCH_PATTERN=Slave SQL: Error 'Duplicate entry .* on query\. .*Query: '.*', Gtid 0-1-100, Internal MariaDB error code:|Slave SQL: Could not execute Write_rows.*table test.t1; Duplicate entry.*, Gtid 0-1-100, Internal MariaDB error
--source include/search_pattern_in_file.inc
--let SEARCH_PATTERN=Slave SQL: The incident LOST_EVENTS occurred on the master\. Message: <none>, Internal MariaDB error code: 1590
--source include/search_pattern_in_file.inc


--connection master
DROP TABLE t1;

connection master;
SET GLOBAL BINLOG_CHECKSUM=default;
connection slave;
SET GLOBAL BINLOG_CHECKSUM=default;
connection master;
--source include/rpl_end.inc