Bug #94340 | backwards incompatible changes in 8.0: Error number: 3747 | ||
---|---|---|---|
Submitted: | 15 Feb 2019 7:59 | Modified: | 28 Mar 2019 12:56 |
Reporter: | Simon Mudd (OCA) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Replication | Severity: | S3 (Non-critical) |
Version: | 8.0.13, 8.0.15 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | 8.0, incompatible changes, minor_release |
[15 Feb 2019 7:59]
Simon Mudd
[15 Feb 2019 8:42]
Simon Mudd
add 8.0 tag
[15 Feb 2019 8:58]
Frederic Descamps
Hi Simon, This particular change was needed to allow the use of CREATE/DROP TEMPORARY tables in transaction even with GTID and ROW base replication. More infor can be found on https://dev.mysql.com/worklog/task/?id=8872
[15 Feb 2019 10:01]
Simon Mudd
Hi, I don't buy this. Sorry. I already run GTID but was using SBR. So the user story: "So that their is no concern to turn GTID_MODE on." is irrelevant. So the dev story: "1. If a slave has open temporary tables, and the slave is restarted, the temporary tables are lost, because they are dropped when the connection is closed, and subsequently the slave diverges or the applier stops with an error. No DROP TABLE is written to the slave's binary log." I would be pretty surprised that if just at the time that I ran this I had a temporary table open. The error message does not talk about temporary tables so it's hard to figure out the underlying reason. The error I saw did not report this specific issue. If I had an open temporary table I'd like to know about it and maybe the error message should reflect reality. ERROR 3747: Changing @@global.binlog_format or @@persist.binlog_format is disallowed when any replication channel applier thread is running. You could execute STOP SLAVE SQL_THREAD and try again. while trying to execute: SET GLOBAL binlog_format = 'ROW' Maybe it should say something like: ERROR 9999: Changing @@global.binlog_format or @@persist.binlog_format is disallowed when there are open temporary tables created by the SQL thread(s). You have NN open temporary tables. Please wait for this number to drop to 0 before repeating this command ... or similar. I'm aware of all the issues that stopping replication with open temporary tables may trigger which is why I'd be pretty surprised to see this actually being a problem in the case I experienced. So it looks to me as if the change that's been made has been too strict in its implementation requirements and has not taken into account the ease of migration between formats.
[18 Feb 2019 12:51]
MySQL Verification Team
Hello Simon, Thank you for the report and feedback. regards, Umesh
[28 Mar 2019 12:56]
Margaret Fisher
Posted by developer: Changelog entry added for MySQL 8.0.17: From MySQL 8.0.13, if any replication channel has open temporary tables, the binary logging format cannot be changed using SET @@global.binlog_format or SET @@persist.binlog_format. Previously, if this operation was attempted after the new restriction was implemented, the wrong error message was returned to the client (referencing a running replication channel applier as the issue, rather than an open temporary table). The appropriate error message is now returned.
[28 Mar 2019 16:42]
Margaret Fisher
Posted by developer: Restriction now highlighted in https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html