MASTER_POS_WAIT()
. The MASTER_POS_WAIT()
is an excellent function that allows you to wait until the slave reaches a point at or after the given binlog position. Observe that after the statement issuing a MASTER_POS_WAIT()
returns, the slave threads are still running, so this means that even if a STOP SLAVE
is issued immediately after the statement with MASTER_POS_WAIT()
, it is bound to move a little more before actually stopping. For Dathan's situation, this is not necessary, but wouldn't it be great if you could stop a slave at exactly the position that you want? Well, that is possible.
There is another command that does exactly what you want, and that is START SLAVE UNTIL
. The problem with this command is that it can only be executed when the slave threads have stopped, but that is trivial to do by just issuing a STOP SLAVE
. In other words, instead of doing:
SELECT MASTER_POS_WAIT('dbmaster1-bin.000002', 4); SLAVE STOP;like Dathan suggests, do:
STOP SLAVE; START SLAVE UNTIL MASTER_LOG_FILE='dbmaster1-bin.000002', MASTER_LOG_POS=4; SELECT MASTER_POS_WAIT('dbmaster1-bin.000002', 4);