Bug #54854 | Can't find good position for replication break between DDL statements | ||
---|---|---|---|
Submitted: | 28 Jun 2010 7:40 | Modified: | 18 Apr 2012 13:38 |
Reporter: | Hartmut Holzgraefe | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Cluster: Replication | Severity: | S3 (Non-critical) |
Version: | mysql-5.1-telco-7.0 | OS: | Linux |
Assigned to: | Martin Zaun | CPU Architecture: | Any |
Tags: | mysql-cluster-7.0.10 |
[28 Jun 2010 7:40]
Hartmut Holzgraefe
[28 Jun 2010 7:43]
Hartmut Holzgraefe
Workarounds: - start replication at end position of last known applied epoch, skip over failed DDL statements - only perform DDL operations on the mysql server that is the master for the active replication channel
[28 Jun 2010 7:46]
Hartmut Holzgraefe
The replication channel fail over procedure as documented in http://dev.mysql.com/doc/mysql-cluster-excerpt/5.1/en/mysql-cluster-replication-failover.h... will always lead to DDL operations that happened right after the last applied transaction being skipped.
[28 Oct 2010 8:30]
Geert Vanderkelen
Bug #22296 was marked as duplicate of this one.
[18 Apr 2012 11:34]
Jon Stephens
Fixed in 7.0.33/7.1.22/7.2.6.
[18 Apr 2012 13:38]
Jon Stephens
Documented fix as follows in the NDB-7.0.33, 7.1.22, and 7.2.6 changelogs: DDL statements could sometimes be missed during replication channel cutover, due to the fact that there may not be any epochs following the last applied epoch when the slave is up to date and no new epoch has been finalized on the master. Because epochs are not consecutively numbered, there may be a gap between the last applied epoch and the next epoch; thus it is not possible to determine the number assigned to the next epoch. This meant that, if the new master did not have all epochs, it was possible for those epochs containing only DDL statements to be skipped over. The fix for this problem includes modifications to mysqld binary logging code so that the next position in the binary log following the COMMIT event at the end of an epoch transaction, as well as the addition of next_file and next_position columns to the mysql.ndb_binlog_index table. In addition, a new replication channel cutover mechanism is defined that employs these new columns. To make use of the new cutover mechanism, it is necessary to modify the query previously used to obtain the start point; in addition, to simplify prevention of possible errors caused by duplication of DDL statements, a new shorthand value ddl_exist_errors is implemented for use with the mysqld option --slave-skip-errors. For more information, see "Implementing Failover with MySQL Cluster Replication". Note that the existing replication channel cutover mechanism continues to function as before, including the same limitations described previously. Also updated MySQL Cluster Replication and mysqld server option documentation. Closed.