17.2.2 Replication Relay and Status Logs

17.2.2.1 The Slave Relay Log
17.2.2.2 Slave Status Logs

During replication, a slave server creates several logs that hold the binary log events relayed from the master to the slave, and to record information about the current status and location within the relay log. There are three types of logs used in the process, listed here:

Prior to MySQL 5.6.7, the Master_id column of the slave_master_info and slave_relay_log_info tables showed the slave's server ID instead of the master's server ID. (Bug #12334346)

Crash-safe replication.  In order for replication to be crash-safe when using tables for logging status and relay information, these tables must use a transactional storage engine, such as InnoDB. Beginning with MySQL 5.6.6, these tables are created using InnoDB. (Bug #13538891)

Therefore, in order to guarantee crash safety on the slave, you must run the slave with --relay-log-recovery enabled, in addition to setting --relay-log-info-repository to TABLE.

Prior to MySQL 5.6.6, if mysqld was unable to initialize the replication logging tables, the slave refused to start. In MySQL 5.6.6 and later, a warning is given when this occurs, but the slave is allowed to continue starting. (Bug #13971348) This situation is most likely to occur when upgrading from a version of MySQL that does not support slave logging tables to one in which they are supported.

In MySQL 5.6.5 and earlier, the slave_master_info and slave_relay_log_info tables used MyISAM by default, which meant that it was necessary before starting replication to change the storage engine used by these tables by issuing ALTER TABLE ... ENGINE=InnoDB, as shown here:

ALTER TABLE mysql.slave_master_info ENGINE=InnoDB;
ALTER TABLE mysql.slave_relay_log_info ENGINE=InnoDB;

The ALTER TABLE statements must be executed by the MySQL root or other user account with the appropriate privileges on the mysql database. You should not attempt to do this while replication is running; beginning with MySQL 5.6.3, trying to execute an ALTER TABLE on either these tables while replication is ongoing is disallowed. Starting with MySQL 5.6.4, execution of any statement requiring a write lock on either or both of these tables is disallowed while replication is ongoing, while statements that perform only reads are permitted at any time.

Important

Do not attempt to update or insert rows in the slave_master_info or slave_relay_log_info table manually. Doing so can cause undefined behavior, and is not supported.

Prior to MySQL 5.6.4, mysqldump did not dump the replication log tables unless they were specified by name and the --master-data option was used.