opção fácil - se você tiver uma pequena quantidade de dados, use
mysqldump --master-data -uyouruser -p.... -a > dump.sql
isso bloqueará todas as tabelas e gerará um dump com informações sobre a posição atual do mestre. despejo irá bloquear todas as tabelas - provavelmente não é algo que você quer fazer quando você tem site ocupado e dados de 20GB para despejar.
opção mais avançada. pegue seus dados na partição lvm e use o instantâneo lvm. que está em um processo bloqueia todas as tabelas FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; em outro proces, execute a sincronização algumas vezes para uma boa medida e crie um instantâneo lvm de seus logs de dados / innodb. logo após criar um instantâneo [que leva 2-3 segundos para mim] desbloqueie todas as tabelas.
agora você tem um instantâneo consistente e seu servidor SQL ainda está em execução. montar instantâneo e 'enviar' o mais cedo possível para outro servidor. lá rodar o mysql nesses dados, deixar o innodb recuperar todos os dados dos logs e executar o mysqldump, que é enviado para o escravo.
inicie o escravo usando as informações do SHOW MASTER STATUS que você executou antes de tirar o instantâneo do LVM.
mylvmbackup faz exatamente isso. leia sobre isso aqui .