Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток, господа и дамы.
Есть два MySQL сервера, с мастера на слэйв настроена репликация.
Настройки на мастере, касающиеся репликации:
binlog-format = ROW expire_logs_days = 5
(если выставить более 5 дней - есть вероятность забить весь диск)
Слэйв в очередной раз остановил репликацию из-за ошибки - это нечасто, но происходит. Обычно я замечаю, что репликация остановилась, устраняю проблему (как правило, достаточно бывает просто пропустить строку в логе, которая вызывала проблему - во всех моих случаях это не приводило к рассинхронизации) и запускаю репликацию с момента остановки:
STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE;
В этот раз остановка произошла более 5 дней назад - соответственно, бинарные логи на мастере, старшие 5 дней, уже удалились.
Слэйв продолжает вычитывать бинарные логи с мастера и складывает их в свои логи.
Вопрос: существует ли возможность пропустить проблемную строку и продолжить репликацию с тех бинарных логов, которые слэйв вычитал с мастера и сохранил у себя?
Базы на мастере достаточно объемные, полный бэкап (чтобы потом с него восстановить базы на слэйве) займет несколько часов - такой длительный простой крайне нежелателен.
Заранее спасибо за ответы.
Неактивен
Да, тот же способ должен работать
Неактивен
SQL_SLAVE_SKIP_COUNTER действует только на SQL-тред, то есть он пропустит одно событие в relay-логе на слейве. Поэтому должно сработать.
Для бэкапа не нужно останавливать мастер. Используйте Percona XtraBackup.
Неактивен
rgbeast написал:
SQL_SLAVE_SKIP_COUNTER действует только на SQL-тред, то есть он пропустит одно событие в relay-логе на слейве. Поэтому должно сработать.
OK, я этого не знал.
rgbeast написал:
Для бэкапа не нужно останавливать мастер. Используйте Percona XtraBackup.
Да, действительно - у XtraBackup есть специальный режим по созданию бэкапов для слэйва без остановки мастера. Это несомненный плюс. Вот только это не спасает от блокировки MyISAM таблиц, которых у нас подавляющее большинство. Именно из-за того, что при бэкапе лочатся таблицы (а у "больших" БД это довольно длительный промежуток времени) мы и запустили репликацию. Т.е. мастер реплицируется на слэйв, а уже со слэйва делаются бэкапы.
Спасибо за обе подсказки (и по SQL_SLAVE_SKIP_COUNTER, и по XtraBackup).
Попробую "пропихнуть" репликацию. Ну, а если не получится - тогда уж придётся воспользоваться XtraBackup.
Неактивен
Всем спасибо за ответы.
Пропустил строку бинлога, которая вызывала ошибку.
После старта репликация продолжилась из ранее вычитанных с мастера _локальных_ бинлогов.
Неактивен