Если команда не может быть выполнена на слейве или же выполнена с ошибкой, то репликация приостанавливается. Бинарный лог на мастере при этом продолжает вестить. Более того, этот бинарный лог передается slave-базе данных, которая записывает его в так называемый relay-log. Таким образом, на слейв передаются те запросы, которые должны быть на нем выполены, но реально они не выполняются, а только "складируются".
Гарантией того, что слейв продолжает получать бинарный лог со стороны мастера служит то, что обновяется поле Read_Master_Log_Pos в выборке SHOW SLAVE STATUS. И это значание должно быть равным значению Position в выборке SHOW MASTER STATUS на мастере.
Командой SHOW SLAVE STATUS можем посмотреть ошибку и запрос, который ее вызвал, название файла relay-лога и его позицию в момент возникновения ошибки. Например:
Relay_Log_File: localunix-relay-bin.000012
Relay_Log_Pos: 251
Смотрим файл:
mysqlbinary localunix-relay-bin.000012 | less
# at 251
Чуть ниже будет видна команда, которая вызвала ошибку. После устранения причины возникновения ошибки, даем команду START SLAVE, и наш слейв возобновит обработку relay-лога с 251-ой позиции.
Если, например, мы не хотим выполнять текущую команду, а "перепрыгнуть" через нее, тогда нужно остановить слейв - STOP SLAVE, воспользоваться командой CHANGE MASTER TO RELAY_LOG_POS=$position; и запустить слейв заново - START SLAVE; Значение $position - это следующая позиция в релей-бин-логе на слейве.
Кроме того, содержимое binary/relay лога можно напрямую послать на выполнение mysql серверу:
shell> mysqlbinlog log_file | mysql -h server_name
Важно: Команда CHANGE MASTER удаляет все накопленные на слейве relay лог файлы и создает новые, если не указаны опции RELAY_LOG_FILE или RELAY_LOG_POS.