17.1.2 Replication Formats

17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Based Replication
17.1.2.2 Usage of Row-Based Logging and Replication
17.1.2.3 Determination of Safe and Unsafe Statements in Binary Logging

Replication works because events written to the binary log are read from the master and then processed on the slave. The events are recorded within the binary log in different formats according to the type of event. The different replication formats used correspond to the binary logging format used when the events were recorded in the master's binary log. The correlation between binary logging formats and the terms used during replication are:

In MySQL 5.5, statement-based format is the default.

MySQL Cluster.  The default binary logging format in all MySQL Cluster NDB 7.2 releases, beginning with MySQL Cluster NDB 7.2.1, is STATEMENT. (This is a change from previous versions of MySQL Cluster.) You should note that MySQL Cluster Replication always uses row-based replication, and that the NDB storage engine is incompatible with statement-based replication. This means that you must manually set the format to ROW prior to enabling MySQL Cluster Replication. See Section 18.6.2, “General Requirements for MySQL Cluster Replication”, for more information.

When using MIXED format, the binary logging format is determined in part by the storage engine being used and the statement being executed. For more information on mixed-format logging and the rules governing the support of different logging formats, see Section 5.2.4.3, “Mixed Binary Logging Format”.

The logging format in a running MySQL server is controlled by setting the binlog_format server system variable. This variable can be set with session or global scope. The rules governing when and how the new setting takes effect are the same as for other MySQL server system variables—setting the variable for the current session lasts only until the end of that session, and the change is not visible to other sessions; setting the variable globally requires a restart of the server to take effect. For more information, see Section 13.7.4, “SET Syntax”.

There are conditions under which you cannot change the binary logging format at runtime or doing so causes replication to fail. See Section 5.2.4.2, “Setting The Binary Log Format”.

You must have the SUPER privilege to set either the global or session binlog_format value.

The statement-based and row-based replication formats have different issues and limitations. For a comparison of their relative advantages and disadvantages, see Section 17.1.2.1, “Advantages and Disadvantages of Statement-Based and Row-Based Replication”.

With statement-based replication, you may encounter issues with replicating stored routines or triggers. You can avoid these issues by using row-based replication instead. For more information, see Section 20.7, “Binary Logging of Stored Programs”.