Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 10.0.11
-
Fix Version/s: N/A
-
Component/s: Documentation
-
Labels:
-
Environment:any
Description
The following is probably an edge case, but it's still a bug. Tracking it in the code may yield a key for other latent problems.
Servers started with binlog_format=STATEMENT.
log_slave_updates is enabled.
Changed SET GLOBAL binlog_format='MIXED' on servers while running.
Later, we see this error.
140930 8:51:33 [ERROR] Slave SQL: Error executing row event: 'Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT.', Gtid 0-9-360301963, Int
ernal MariaDB error code: 1666
140930 8:51:33 [Warning] Slave: Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT. Error_code: 1666
That of course shouldn't happen, as the binlog format has been changed.
Only a mysqld restart (with binlog_format=MIXED) resolved this.
Conclusion: some variable in running server didn't update to MIXED.
Gliffy Diagrams
Attachments
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions
Hi Arjen,
From your description, it looks like you didn't restart replication (didn't issue STOP SLAVE/START SLAVE) after changing the binlog_format. If so, what you observe is totally expected. Binlog format obeys the standard global/session variable behavior, changing it globally only affects new connections, not the existing ones. Your slave threads are already running with the statement format, and are not supposed to pick up the change.
For the reference: http://dev.mysql.com/doc/refman/5.5/en/using-system-variables.html ("If you change a global system variable...").
Please comment if you disagree.