Bug #88595 | Row-based master-master replication broken by add column or drop column | ||
---|---|---|---|
Submitted: | 21 Nov 2017 22:12 | Modified: | 31 Jan 2018 15:58 |
Reporter: | Eric Rasmussen | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: Row Based Replication ( RBR ) | Severity: | S2 (Serious) |
Version: | 5.6.37 | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[21 Nov 2017 22:12]
Eric Rasmussen
[22 Dec 2017 11:42]
MySQL Verification Team
Hi, Not sure if this is a replication bug or documentation bug (that it's not documented that we have this limitation), but I'll let replication team sort it out, in any how the bug is verified. all best Bogdan
[31 Jan 2018 15:58]
Eric Rasmussen
I recently discovered the following statement while looking at the known limitations of Group Replication (a feature not available until MySQL 5.7): https://dev.mysql.com/doc/refman/5.7/en/group-replication-limitations.html "Concurrent DDL versus DML Operations. Concurrent data definition statements and data manipulation statements executing against the same object but on different servers is not supported when using multi-primary mode. During execution of Data Definition Language (DDL) statements on an object, executing concurrent Data Manipulation Language (DML) on the same object but on a different server instance has the risk of conflicting DDL executing on different instances not being detected." That appears to accurately describe the issue encountered here. I suggest this be added to these pages (and similar for older versions): https://dev.mysql.com/doc/refman/5.7/en/replication-sbr-rbr.html https://dev.mysql.com/doc/refman/5.6/en/replication-sbr-rbr.html
[24 Nov 2022 12:06]
a doicin
The company I work for had this the other day, 5 years after the original report, happening under exactly the same conditions i.e. master-master replication, after a change which removed a field from the middle of a table, but on MariaDB 10.x.x ... not MySQL v5.x.x We resolved by restarting the slave/replicant with ALL_LOSSY,ALL_NO_LOSSY because the 1677 jumped from column to column. Should we assume in this case the problem was never properly resolved? If so the best way to add or remove fields is to do so at the END of the table as the workaround says, so if you want to remove a field, you ALTER TABLE "move" that field to the END of the table BEFORE removing. HTH.