Bug #71609 The default for binlog_format should be changed from "statement" to "mixed"
Submitted: 6 Feb 2014 16:06 Modified: 24 Jan 2018 16:58
Reporter: x xxxx Email Updates:
Status: Won't fix Impact on me:
None 
Category:MySQL Server: Errors Severity:S3 (Non-critical)
Version:5.5 OS:Any
Assigned to: CPU Architecture:Any
Tags: replication

[6 Feb 2014 16:06] x xxxx
Description:
Quoting https://dev.mysql.com/doc/refman/5.5/en/binary-log-setting.html

"Warning
When using statement-based logging for replication, ... data modification is nondeterministic; ... this is not a good practice ..."

Still, "binlog_format = statement" is the default in MySQL 5.5.

Please change this and print a warning statement at startup if this setting is dangerous!

How to repeat:
read docs

Suggested fix:
change default
[6 Feb 2014 17:30] Sveta Smirnova
Thank you for the report.

Binlog-format=STATEMENT is default, because:

1. It is required for backward compatibility with installations, initially created before version 5.1 was released.

2. It still has advantages, such as less traffic for particular operations.

But your report is valid and a warning in the error log file does not harm.
[6 Feb 2014 18:38] x xxxx
Re 1: 
A slave server must always be at least at the same version as the master server or else replication (esp. statement based) won't work anyways. Using a 5.5 master with a pre-5.1 slave is hardly a valid scenario :) 
What case do you have in mind that could be broken? Only those where the admin upgrades the master first?

Re 2:
"mixed" is supposed to switch between "statement" and "row based" on demand. How bad must the MySQL servers judgement be that changing this value globally in the my.cnf leads to better performance? If the admin want's to change it for a single query then that would still be possible by changing the variable per session.
[24 Jan 2018 16:58] Luis Soares
The default is now ROW since 5.7. Closing.