1
SET BINLOG_FORMAT=MIXED;
3
CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ENGINE=INNODB;
4
INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
6
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
7
UPDATE t1 SET b = 2*a WHERE a > 1;
10
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
11
UPDATE t1 SET b = a * a WHERE a > 3;
13
SET BINLOG_FORMAT=STATEMENT;
15
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
16
UPDATE t1 SET b = 1*a WHERE a > 1;
17
ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-UNCOMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
20
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
21
UPDATE t1 SET b = 2*a WHERE a > 2;
22
ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
25
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
26
UPDATE t1 SET b = 3*a WHERE a > 3;
29
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
30
UPDATE t1 SET b = 4*a WHERE a > 4;
32
SET BINLOG_FORMAT=MIXED;
34
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
35
UPDATE t1 SET b = 1*a WHERE a > 1;
38
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
39
UPDATE t1 SET b = 2*a WHERE a > 2;
42
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
43
UPDATE t1 SET b = 3*a WHERE a > 3;
46
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
47
UPDATE t1 SET b = 4*a WHERE a > 4;
49
SET BINLOG_FORMAT=ROW;
51
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
52
UPDATE t1 SET b = 1*a WHERE a > 1;
55
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
56
UPDATE t1 SET b = 2*a WHERE a > 2;
59
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
60
UPDATE t1 SET b = 3*a WHERE a > 3;
63
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
64
UPDATE t1 SET b = 4*a WHERE a > 4;
66
show binlog events from <binlog_start>;
67
Log_name Pos Event_type Server_id End_log_pos Info
68
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ENGINE=INNODB
69
master-bin.000001 # Query # # use `test`; BEGIN
70
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6)
71
master-bin.000001 # Xid # # COMMIT /* XID */
72
master-bin.000001 # Query # # use `test`; BEGIN
73
master-bin.000001 # Query # # use `test`; UPDATE t1 SET b = 2*a WHERE a > 1
74
master-bin.000001 # Xid # # COMMIT /* XID */
75
master-bin.000001 # Query # # use `test`; BEGIN
76
master-bin.000001 # Table_map # # table_id: # (test.t1)
77
master-bin.000001 # Update_rows # # table_id: #
78
master-bin.000001 # Update_rows # # table_id: #
79
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
80
master-bin.000001 # Xid # # COMMIT /* XID */
81
master-bin.000001 # Query # # use `test`; BEGIN
82
master-bin.000001 # Query # # use `test`; UPDATE t1 SET b = 3*a WHERE a > 3
83
master-bin.000001 # Xid # # COMMIT /* XID */
84
master-bin.000001 # Query # # use `test`; BEGIN
85
master-bin.000001 # Query # # use `test`; UPDATE t1 SET b = 4*a WHERE a > 4
86
master-bin.000001 # Xid # # COMMIT /* XID */
87
master-bin.000001 # Query # # use `test`; BEGIN
88
master-bin.000001 # Table_map # # table_id: # (test.t1)
89
master-bin.000001 # Update_rows # # table_id: #
90
master-bin.000001 # Update_rows # # table_id: #
91
master-bin.000001 # Update_rows # # table_id: #
92
master-bin.000001 # Update_rows # # table_id: #
93
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
94
master-bin.000001 # Xid # # COMMIT /* XID */
95
master-bin.000001 # Query # # use `test`; BEGIN
96
master-bin.000001 # Table_map # # table_id: # (test.t1)
97
master-bin.000001 # Update_rows # # table_id: #
98
master-bin.000001 # Update_rows # # table_id: #
99
master-bin.000001 # Update_rows # # table_id: #
100
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
101
master-bin.000001 # Xid # # COMMIT /* XID */
102
master-bin.000001 # Query # # use `test`; BEGIN
103
master-bin.000001 # Query # # use `test`; UPDATE t1 SET b = 3*a WHERE a > 3
104
master-bin.000001 # Xid # # COMMIT /* XID */
105
master-bin.000001 # Query # # use `test`; BEGIN
106
master-bin.000001 # Query # # use `test`; UPDATE t1 SET b = 4*a WHERE a > 4
107
master-bin.000001 # Xid # # COMMIT /* XID */
108
master-bin.000001 # Query # # use `test`; BEGIN
109
master-bin.000001 # Table_map # # table_id: # (test.t1)
110
master-bin.000001 # Update_rows # # table_id: #
111
master-bin.000001 # Update_rows # # table_id: #
112
master-bin.000001 # Update_rows # # table_id: #
113
master-bin.000001 # Update_rows # # table_id: #
114
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
115
master-bin.000001 # Xid # # COMMIT /* XID */
116
master-bin.000001 # Query # # use `test`; BEGIN
117
master-bin.000001 # Table_map # # table_id: # (test.t1)
118
master-bin.000001 # Update_rows # # table_id: #
119
master-bin.000001 # Update_rows # # table_id: #
120
master-bin.000001 # Update_rows # # table_id: #
121
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
122
master-bin.000001 # Xid # # COMMIT /* XID */
123
master-bin.000001 # Query # # use `test`; BEGIN
124
master-bin.000001 # Table_map # # table_id: # (test.t1)
125
master-bin.000001 # Update_rows # # table_id: #
126
master-bin.000001 # Update_rows # # table_id: #
127
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
128
master-bin.000001 # Xid # # COMMIT /* XID */
129
master-bin.000001 # Query # # use `test`; BEGIN
130
master-bin.000001 # Table_map # # table_id: # (test.t1)
131
master-bin.000001 # Update_rows # # table_id: #
132
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
133
master-bin.000001 # Xid # # COMMIT /* XID */
135
show status like "binlog_cache_use";
138
show status like "binlog_cache_disk_use";
140
Binlog_cache_disk_use 0
141
create table t1 (a int) engine=innodb;
142
show status like "binlog_cache_use";
145
show status like "binlog_cache_disk_use";
147
Binlog_cache_disk_use 1
151
show status like "binlog_cache_use";
154
show status like "binlog_cache_disk_use";
156
Binlog_cache_disk_use 1
159
`a` int(11) NOT NULL auto_increment,
160
`b` int(11) default NULL,
162
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
164
`a` int(11) NOT NULL auto_increment,
165
`b` int(11) default NULL,
167
) ENGINE=INNODB DEFAULT CHARSET=latin1 ;
168
insert into t1 values (1,1),(2,2);
169
insert into t2 values (1,1),(4,4);
171
UPDATE t2,t1 SET t2.a=t1.a+2;
172
ERROR 23000: Duplicate entry '3' for key 'PRIMARY'
173
select * from t2 /* must be (3,1), (4,4) */;
177
there must no UPDATE in binlog
179
File Position Binlog_Do_DB Binlog_Ignore_DB
180
master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
183
insert into t1 values (1,2),(3,4),(4,4);
184
insert into t2 values (1,2),(3,4),(4,4);
186
UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a;
187
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
188
there must no UPDATE in binlog
190
File Position Binlog_Do_DB Binlog_Ignore_DB
191
master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>