mysqldump --delete-master-logs безопасен для репликации?

У меня есть следующая схема резервного копирования на моем сервере:

Каждый день я запускаю "mysqladmin flush-logs".

Еженедельно я запускаю "mysqldump --single-transaction --flush-logs --master-data=2 --delete-master-logs > ..."

С недавнего времени я добавил ведомый сервер с нормальной репликацией master-slave.

Вопрос: может ли моя схема резервного копирования нарушить репликацию, если она удалит bin-логи, пока не все изменения были синхронизированы? Должен ли я тогда удалять бин-логи вручную, по прошествии приличного времени?


person Dmitri Pisarev    schedule 20.05.2013    source источник


Ответы (1)


Из этого закрытого отчета об ошибке;

--delete-master-logs имеет тот же эффект, что и SQL-команда RESET MASTER.

http://dev.mysql.com/doc/refman/5.0/en//reset-master.html

RESET MASTER удаляет все двоичные файлы журнала, перечисленные в индексном файле, сбрасывает индексный файл двоичного журнала, делая его пустым, и создает новый двоичный файл журнала. Этот оператор предназначен для использования только при первом запуске мастера.

Другими словами, да, это может (и, вероятно, нарушит) вашу репликацию.

person Joachim Isaksson    schedule 20.05.2013
comment
Спасибо! Я так и думал! Тогда как мне удалить старые файлы bin-log и как долго я должен их хранить? - person Dmitri Pisarev; 20.05.2013
comment
Достаточно ли чего-то вроде этого?: 'find /mnt/db/mysql_storage/mysql-bin.* -mtime +14 -exec rm -f {} \;' - person Dmitri Pisarev; 20.05.2013
comment
@Dmitri Пока вы уверены, что все ваши ведомые устройства обновлены и прочитали / реплицировали файл журнала, который вы удаляете, все должно быть в порядке (хотя резервное копирование ваших журналов почти никогда не бывает ошибочным) 14 дней кажутся безопасными, как до тех пор, пока ведомое устройство никогда не выходит из строя оборудования и не отключается на это время. - person Joachim Isaksson; 20.05.2013