17.4.1 Replication Features and Issues

17.4.1.1 Replication and AUTO_INCREMENT
17.4.1.2 Replication and BLACKHOLE Tables
17.4.1.3 Replication and Character Sets
17.4.1.4 Replication of CREATE ... IF NOT EXISTS Statements
17.4.1.5 Replication of CREATE TABLE ... SELECT Statements
17.4.1.6 Replication of CREATE SERVER, ALTER SERVER, and DROP SERVER
17.4.1.7 Replication of CURRENT_USER()
17.4.1.8 Replication of DROP ... IF EXISTS Statements
17.4.1.9 Replication with Differing Table Definitions on Master and Slave
17.4.1.10 Replication and DIRECTORY Table Options
17.4.1.11 Replication of Invoked Features
17.4.1.12 Replication and Floating-Point Values
17.4.1.13 Replication and FLUSH
17.4.1.14 Replication and System Functions
17.4.1.15 Replication and LIMIT
17.4.1.16 Replication and LOAD DATA INFILE
17.4.1.17 Replication and the Slow Query Log
17.4.1.18 Replication and REPAIR TABLE
17.4.1.19 Replication and Master or Slave Shutdowns
17.4.1.20 Replication and max_allowed_packet
17.4.1.21 Replication and MEMORY Tables
17.4.1.22 Replication and Temporary Tables
17.4.1.23 Replication of the mysql System Database
17.4.1.24 Replication and the Query Optimizer
17.4.1.25 Replication and Reserved Words
17.4.1.26 SET PASSWORD and Row-Based Replication
17.4.1.27 Slave Errors During Replication
17.4.1.28 Replication of Server-Side Help Tables
17.4.1.29 Replication and Server SQL Mode
17.4.1.30 Replication Retries and Timeouts
17.4.1.31 Replication and TIMESTAMP
17.4.1.32 Replication and Time Zones
17.4.1.33 Replication and Transactions
17.4.1.34 Replication and Triggers
17.4.1.35 Replication and TRUNCATE TABLE
17.4.1.36 Replication and Variables
17.4.1.37 Replication and Views

The following sections provide information about what is supported and what is not in MySQL replication, and about specific issues and situations that may occur when replicating certain statements.

Statement-based replication depends on compatibility at the SQL level between the master and slave. In others, successful SBR requires that any SQL features used be supported by both the master and the slave servers. For example, if you use a feature on the master server that is available only in MySQL 5.5 (or later), you cannot replicate to a slave that uses MySQL 5.1 (or earlier).

Such incompatibilities also can occur within a release series when using pre-production releases of MySQL. For example, the SLEEP() function is available beginning with MySQL 5.0.12. If you use this function on the master, you cannot replicate to a slave that uses MySQL 5.0.11 or earlier.

For this reason, use Generally Available (GA) releases of MySQL for statement-based replication in a production setting, since we do not introduce new SQL statements or change their behavior within a given release series once that series reaches GA release status.

If you are planning to use statement-based replication between MySQL 5.5 and a previous MySQL release series, it is also a good idea to consult the edition of the MySQL Reference Manual corresponding to the earlier release series for information regarding the replication characteristics of that series.

With MySQL's statement-based replication, there may be issues with replicating stored routines or triggers. You can avoid these issues by using MySQL's row-based replication instead. For a detailed list of issues, see Section 20.7, “Binary Logging of Stored Programs”. For more information about row-based logging and row-based replication, see Section 5.2.4.1, “Binary Logging Formats”, and Section 17.1.2, “Replication Formats”.

For additional information specific to replication and InnoDB, see Section 14.20, “InnoDB and MySQL Replication”. For information relating to replication with MySQL Cluster, see Section 18.6, “MySQL Cluster Replication”.