Multi-source Replication and Multi-threaded Applier Enhancements Preview

There are a lot of nice goodies in MySQL 5.7.5 already, but there are also some additional features that we are working on and would like to share  with you right now as well. For that we have done a couple of labs releases. In this post we will be referring to the labs release that contains enhanced multi-threaded slave applier and a refreshed version of multi-source replication.

We put these previews out there, among other things,  to get early feedback from you. This makes you a very relevant part of MySQL development, since you are in an unique position to influence our work by trying them out and commenting how good or bad was your experience or even just by pointing out things that you would like to improve.

Enhanced Timestamp-based Multi-Threaded Slave Applier.

A lot of time and effort was spent to change a single threaded slave codebase to become multi-threaded capable. Then back in 2010 the first (labs) release was put out there. Later in 2011 this feature was pushed to 5.6.3 and finally released as part of MySQL 5.6 GA.

The MySQL 5.6 slave applier threads parallelize based on which set of schemas each transaction operates on. Transactions applied to the same schema are serialized while transactions applied to different schemas are applied in parallel. This already serves a lot of use cases, especially those shards are arranged per database. Several MySQL users are happy with it. Nonetheless, this was bound to be  improved.

And by the time MySQL 5.7.2 was released, a new scheduling policy for the multi-threaded slave applier was released with it. It builds on top of MySQL 5.6’s foundation and the scheduling policy dictates that transactions can be applied in parallel as long as their execution on the master was done in parallel (regardless of which schema transactions are operating on). This means that the master puts in the binary log some information that the slave uses to decide which transactions can it apply in parallel. The end result is that we get inter-transaction multi-threaded applier.

Still there was room for improvement. Fast forward to the present day, and we are releasing on labs an improved transaction dependency tracker on the master and a scheduling policy on the applier side that leverages the information provided. This means that in the labs release we are able to get even more throughput on the applier/slave side than in previous releases of MySQL. Without changing any configuration or tweaking the workload.

Multi-source replication refresh

It has been a while since we released the first preview of multi-source replication. We had a lot of people praising that release, and we also got valuable feedback (both, positive and negative feedback). As such, we continued to work on this feature, considered some suggested changes and spent some time thoroughly testing it. It is with great pleasure that we release a second preview, more stable, more tested, more integrated, and with a better user interface. I am sure you will have a lot of fun with this feature.

What Next?

I suggest that you give these two big enhancements a try. Download the MySQL Optimizer/InnoDB/Replication package (mysql-5.7.5-labs-preview) from and check them out. And if you like them, lets us know that you do. If you don’t, let  us know too, we can change things… Have fun!

426 total views, 8 views today

About Luis Soares

Luis Soares is the MySQL Replication Director at Oracle. His research interests include replication technologies, dependable systems and high availability. Before joining the MySQL team, he was both a post-graduate student and a researcher at the University of Minho, Portugal, where he designed and implemented group-based replication protocols. Before that, he worked for a Portuguese multi-national company as a system analyst.

Leave a Reply