Hi all.
I have installed a setup in which I use semisync replication. On master I have:
mysql> show status like '%rpl%';
+--------------------------------------------+-------------+
| Variable_name | Value |
+--------------------------------------------+-------------+
| Rpl_semi_sync_master_clients | 1 |
| Rpl_semi_sync_master_net_avg_wait_time | 1389 |
| Rpl_semi_sync_master_net_wait_time | 159296355 |
| Rpl_semi_sync_master_net_waits | 114643 |
| Rpl_semi_sync_master_no_times | 0 |
| Rpl_semi_sync_master_no_tx | 0 |
| Rpl_semi_sync_master_status | ON |
| Rpl_semi_sync_master_timefunc_failures | 0 |
| Rpl_semi_sync_master_tx_avg_wait_time | 33380 |
| Rpl_semi_sync_master_tx_wait_time | 77877106 |
| Rpl_semi_sync_master_tx_waits | 2333 |
| Rpl_semi_sync_master_wait_pos_backtraverse | 43 |
| Rpl_semi_sync_master_wait_sessions | 0 |
| Rpl_semi_sync_master_yes_tx | 114667 |
| Rpl_semi_sync_slave_status | ON |
| Rpl_status | AUTH_MASTER |
+--------------------------------------------+-------------+
So semisync replication is enabled and working and there have been no
switches to async replication since mysql start.
But at the same time I have on the slave:
Seconds_Behind_Master: 364
And I wonder how is it possible?
As far as I understand semisync replication it works that way:
- master starts executing the query
- master sends the query to slave
- master starts the commit and waits for rpl_semi_sync_master_timeout
for ack from one of the slaves
So if I have rpl_semi_sync_master_timeout=5000 (5s) and semisync
replication is working and it has not switched to async replication
why is it possible on the slave to fall behind the master?
Best regards,
Rafal.