Mysql – mixing binlog formats between master and slave

binlogMySQLmysql-5.6replication

I have a pretty much straightforward Master –> Slave replication setup in MySQL 5.6 / Innodb.

Both my Master and Slave are setup in MIXED binlog format.

Now I need my slave to act as a master to plug a Java binlog connector that will retrieve the binlog to further feed a hadoop stack.
For this to work I have enabled the log-slave-updates variable

Thing is: that java connector will better work on row based binary log.

So my question is:

  • Can I safely change the binlog format on my slave for ROW ?
  • and keeping the MIXED format on the master ?

I Couldn't find any specifics about this in MySQL docs.

Best Answer

It might be in the manual:

Each MySQL Server can set its own and only its own binary logging format (true whether binlog_format is set with global or session scope). This means that changing the logging format on a replication master does not cause a slave to change its logging format to match. (When using STATEMENT mode, the binlog_format system variable is not replicated; when using MIXED or ROW logging mode, it is replicated but is ignored by the slave.)

-- http://dev.mysql.com/doc/refman/5.6/en/binary-log-setting.html

That is "Yes" to your questions.

Note that ROW is the default for 5.7. That is, ROW has proven itself to be the 'right' way to do replication. Galera clustering can't even work without ROW.