I was researching about MySQL Semisynchronous Replication, my understanding about the workflow is the follow:
- Master Receive a successful transaction from a client session.
- Master write it to his binaty log
- Master wait for
rpl_semi_sync_master_timeout
milliseconds to receive an acknowledgment from at least one slave - Slave pick this successful transaction, write it to his relay log, flush it to disk
- Slave return an acknowledgment to master
- Master return successful to his client session.
My question is, at any point, this type of replication ensures that the transaction is executed on slave(SQL_TREAD
applies it). Having in mind that it will add a delay on each transaction and in a case of master failure, is not 100% guaranteed that the slave will be consistent with master, what is the benefit(s) of using this type of replication?