The docs say:
Pause the clients using CLIENT PAUSE Wait a few seconds to make sure the replicas processed the latest replication stream from the master.
Generally speaking just waiting isn't enough for verifying replica(s) caught up, there should be a way to compare replication offset to master's but currently "pause" won't allow that.
Comment From: madolson
You can use the master_repl_offset from redis info to verify the replica is caught up. As per the documentation, if you issues: MULTI INFO replication CLIENT PAUSE 600000 EXEC
You will have a point in the time of the master replication offset. You then just need to wait for the replica to have the same master_repl_offset as the master before converting it into a master.
It would be nice if normal redis supported a single automatic failover command the same way that redis cluster does with "CLUSTER FAILOVER".
Comment From: poige
info before client pause, are you joking, aren't you?
Comment From: poige
Also, even if wrapping it up into Multi-Exec guarantees atomicity I'm talking about completely different thing. INFO shouldn't be put on hold when PAUSE is active.