Bug #32434 | Replication doesn't work between 5.2.1-a_drop6p9-log and 5.1.22-ndb-6.3.6-telco | ||
---|---|---|---|
Submitted: | 16 Nov 2007 12:44 | Modified: | 31 Jul 2008 20:05 |
Reporter: | Victoria Reznichenko | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Replication | Severity: | S3 (Non-critical) |
Version: | 5.1 | OS: | Any |
Assigned to: | Paul DuBois | CPU Architecture: | Any |
Tags: | replication, telco, upgrade, version |
[16 Nov 2007 12:44]
Victoria Reznichenko
[29 Jan 2008 13:46]
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/41364 ChangeSet@1.2678, 2008-01-29 14:47:26+01:00, sven@riska.(none) +1 -0 BUG#32434: Replication doesn't work between 5.2.1-a_drop6p9-log and 5.1.22-ndb-6.3.6-telco Problem: When slave reads format_description_log_event, it checks if the master is a version that uses an old binlog format. See also BUG#27779. Not all possible server_versions were listed. Fix: Check for all server_versions which use the old binlog_format.
[29 Jan 2008 14:19]
Sven Sandberg
This is the same problem as for BUG#27779: In the 5.x.y-a_drop5 clones, the binlog used an old format. More precisely, log events had different id numbers than in other clones. When replicating to a slave with the new format, the slave would try to read the wrong type of event. In the fix for BUG#27779, the slave checks the master version and permutes the id numbers it receives from the master, if the master is a version known to use the old format. However, in the fix for BUG#27779, the slave did not check for all versions with the old format. It did not recognize 5.2.1-a_drop6p9-log, for instance. In the patch submitted for the present bug, the list of master versions is complete. See the source code comment introduced by the patch for details.
[12 Feb 2008 12:03]
Lars Thalmann
Docs team, please document the following in the manual when documenting this bug: On Tue, Feb 12, 2008 at 09:18:06AM +0100, Sven Sandberg wrote: > A BINLOG statement X is executed as follows: > > (1) If X is an FD event, save it for later use. > > (2) If X is not an FD event, but there is a saved FD event (from a > previous BINLOG statement executing case (1)), use the saved FD event to > interpret X, and execute X. > > (3) If X is not an FD event, and there is no saved FD event, print an > error message and do not execute X. > > (Here, FD event means Format_description_log_event or Start_log_event_v3.) > > Therefore, the server can read BINLOG statements even for old logs, > given that they are preceded by an appropriate FD event. I also made it > so that mysqlbinlog always prints the FD event, even when outside the > range specified by --start-position=X or --start-date=X (unless the flag > --base64-output=never is specified). See also BUG#32407.
[15 Feb 2008 13:40]
Bugs System
Pushed into 5.1.24-rc
[15 Feb 2008 13:42]
Bugs System
Pushed into 6.0.5-alpha
[16 Feb 2008 9:41]
Jon Stephens
I've noted in the 5.1.24/6.0.5 changelogs that this issue was resolved by the fix for Bug#27779, and reassigned this as a documentation bug to Paul per Lars' documentation request, since Paul is already working on documenting the binlog format.
[31 Jul 2008 20:05]
Paul DuBois
Information about binary log version representation and detection is available here: http://forge.mysql.com/wiki/MySQL_Internals_Binary_Log This includes a note about the exception to version-recognition that was instituted to handle the problem noted in this bug report.