Bug #319 if while a non-transactional slave is replicating a transaction, possiblproblem
| Submitted: | 23 Apr 2003 14:32 | Modified: | 6 May 2009 14:24 |
|---|---|---|---|
| Reporter: | Guilhem Bichot | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Replication | Severity: | S3 (Non-critical) |
| Version: | 4.0, 4.1, 5.1 | OS: | Any (all) |
| Assigned to: | Andrei Elkin | CPU Architecture: | Any |
[23 Apr 2003 14:32]
Guilhem Bichot
[27 Apr 2003 10:38]
Michael Widenius
This is now documented in the manual. We will fix this in a future MySQL release.
[30 Sep 2008 8:39]
Konstantin Osipov
Time has come to verify that RBR works.
[16 Jan 2009 18:11]
Susanne Ebrecht
Not sure if I really understood all right. Tested RBR on 5.1 bzr tree. Fact is stop/start position is the same after stop/start slave. Situation is exactly how Guilhem described it also by using RBR and 5.1.
[2 Feb 2009 12:52]
Susanne Ebrecht
Verified like described: create table innodbtable1(i integer)engine=innodb; begin; delete from innodbtable1; Now stop slave: 090202 13:47:06 [Note] Slave I/O thread killed while reading event 090202 13:47:06 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.000001', position 408 insert into innodbtable1 values(10); commit; Now start slave again: 090202 13:47:44 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000001' at position 408, relay log './ernie-relay-bin.000002' position: 553 090202 13:47:44 [Note] Slave I/O thread: connected to master 'miracee@127.0.0.1:5151',replication started in log 'mysql-bin.000001' at position 408 So it started at same position as it stoped ...
[23 Feb 2009 11:37]
Lars Thalmann
REFINED PROBLEM DESCRIPTION =========================== ASSUMPTIONS - Master has transactional tables (e.g. InnoDB) - Slave has non-transactional tables (e.g. MyISAM) PROBLEMS 1. When slave is stopped *by a user*, the transactional changes are not rolled back on the slave. This causes the changes to be re-applied on the slave at later startup causing errors. 2. When slave is stopped *due to an error*, the transactional changes are not rolled back on the slave. This causes the changes to be re-applied on the slave at later startup causing errors. ANALYSIS ======== 1. Can be solved by a delayed stop as Monty suggested. 2. Can not be solved in the general case without redesigning binlog to be interleaved and having more engine-influenced control over the transactions.
[26 Feb 2009 9:48]
Susanne Ebrecht
Because we have two problems here I opened a separat bug report for the problem "When slave is stopped *by a user*" New bug report is bug #43217
[26 Feb 2009 15:36]
Susanne Ebrecht
This bug report is only for problem 2) when slave stop because of error. Problem 1 is outsourced into bug #43217
[6 Mar 2009 21:38]
Andrei Elkin
The bug contains request to stop processing a mixed transaction in statement base replication in the middle. If there is a non-transaction table the whole group will complete and only afterward STOP slave will become effective.
[26 Mar 2009 8:25]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/70478 2836 Andrei Elkin 2009-03-26 Bug#38205 Row-based Replication (RBR) causes inconsistencies: HA_ERR_FOUND_DUP Bug#319 if while a non-transactional slave is replicating a transaction possible problem It is impossible to roll back a mixed engines transaction when one of the engine is non-transaction. In replication that fact is crucial because the slave can not safely re-apply a transction that was interrupted with STOP SLAVE. Fixed with making STOP SLAVE not be effective immediately in the case the current group of replication events has modified a non-transaction table. In order for slave to leave either the group needs finishing or the user issues KILL QUERY|CONNECTION slave_thread_id.
[6 Apr 2009 12:41]
Andrei Elkin
bug#38205 is being fixed with the same patch.
[9 Apr 2009 13:06]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/71784 2837 Andrei Elkin 2009-04-09 Bug #38205 Row-based Replication (RBR) causes inconsistencies: HA_ERR_FOUND_DUPP_KEY Bug#319 if while a non-transactional slave is replicating a transaction possible problem only testing related: addressing reviewers' comments.
[21 Apr 2009 9:52]
Andrei Elkin
pushed to 5.1+ - bugteam
[5 May 2009 19:37]
Bugs System
Pushed into 5.1.35 (revid:davi.arnaut@sun.com-20090505190206-9xmh7dlc6kom8exp) (version source revid:davi.arnaut@sun.com-20090505190206-9xmh7dlc6kom8exp) (merge vers: 5.1.35) (pib:6)
[6 May 2009 9:45]
Jon Stephens
Documented bugfix in the 5.1.35 changelog as follows:
The transactional behavior of STOP SLAVE has changed. Formerly,
it took effect immediately; now, it waits until the current
replication event group (if any) has finished executing, or until
the user issues a KILL QUERY or KILL CONNECTION statement.
This was done in order to solve the problem encountered when
replication was stopped while a non-transactional slave was
replicating a transaction on the master. (It was impossible to
roll back a mixed-engines transaction when one of the engines was
non-transactional, which meant that the slave could not safely
re-apply any transaction that had been interrupted by STOP
SLAVE.)
Set status = NDI: waiting on merge to 6.0 tree for version info.
[6 May 2009 14:08]
Bugs System
Pushed into 6.0.12-alpha (revid:svoj@sun.com-20090506125450-yokcmvqf2g7jhujq) (version source revid:aelkin@mysql.com-20090421094803-hho7a34gdsby7382) (merge vers: 6.0.11-alpha) (pib:6)
[6 May 2009 14:24]
Jon Stephens
Bugfix also noted in 6.0.12 changelog; closed.
[15 Jun 2009 8:24]
Bugs System
Pushed into 5.1.35-ndb-6.3.26 (revid:jonas@mysql.com-20090615074202-0r5r2jmi83tww6sf) (version source revid:jonas@mysql.com-20090615070837-9pccutgc7repvb4d) (merge vers: 5.1.35-ndb-6.3.26) (pib:6)
[15 Jun 2009 9:04]
Bugs System
Pushed into 5.1.35-ndb-7.0.7 (revid:jonas@mysql.com-20090615074335-9hcltksp5cu5fucn) (version source revid:jonas@mysql.com-20090615072714-rmfkvrbbipd9r32c) (merge vers: 5.1.35-ndb-7.0.7) (pib:6)
[15 Jun 2009 9:44]
Bugs System
Pushed into 5.1.35-ndb-6.2.19 (revid:jonas@mysql.com-20090615061520-sq7ds4yw299ggugm) (version source revid:jonas@mysql.com-20090615054654-ebgpz7elwu1xj36j) (merge vers: 5.1.35-ndb-6.2.19) (pib:6)
[23 Jul 2009 10:24]
Bugs System
Pushed into 5.4.4-alpha (revid:alik@sun.com-20090723102221-ps4uaphwbxzj8p0q) (version source revid:aelkin@mysql.com-20090708180952-73h6cpmg3r5wtxwa) (merge vers: 5.4.4-alpha) (pib:11)
[12 Aug 2009 21:56]
Paul DuBois
Noted in 5.4.2 changelog because next 5.4 version will be 5.4.2 and not 5.4.4.
[12 Aug 2009 21:58]
Paul DuBois
Noted in 5.4.2 changelog because next 5.4 version will be 5.4.2 and not 5.4.4.
[14 Aug 2009 22:48]
Paul DuBois
Ignore previous comment about 5.4.2.
[7 Oct 2009 1:32]
Paul DuBois
The 5.4 fix now has been pushed into 5.4.2.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.105 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.