У меня есть вопрос об удалении двоичных журналов в среде репликации:
У нас есть среда с 1 ведущим и 2 ведомыми (работает mysql 5.5). Иногда мы сталкиваемся с проблемами пространства во время тяжелых процессов обработки, из-за чего каталог журнала bin заполняется. Срок действия журналов истекает каждые 3 дня. Мне было интересно, есть ли причина, по которой журналы должны храниться в течение 3 дней на всех коробках - ведущем и обоих ведомых? Имеет ли смысл, например, вести журналы в течение 3 дней на ведущем устройстве, но в течение 1 дня на ведомых устройствах? Каков наилучший способ сделать это?
Спасибо!
Ответы:
SLAVE
Если ваши подчиненные не являются хозяевами, тогда подчиненные не нуждаются в бинарной регистрации. Вы можете ограничить количество места в журнале ретрансляции, накопленное ведомым устройством. Для дросселирования журналов реле на 4G, добавьте
relay_log_space_limit
/etc/my/.cnf на каждом подчиненном устройстве.и перезапустите MySQL
Если вы не можете установить это, по крайней мере, у вас должно быть какое-то предупреждение, которое делает
SHOW SLAVE STATUS\G
и проверяет значениеRelay_Log_Space
(общее количество байтов, использованных релейными журналами).МАСТЕР
Что касается Мастера, вы можете установить
expire_logs_days
на 1, но у меня есть серьезное предупреждение для вас ...Если репликация обрывается, у вас есть 1 день, чтобы это исправить. В противном случае двоичный журнал на ведущем устройстве может сместиться, и вы не сможете выполнить какую-либо команду CHANGE MASTER TO для выравнивания репликации. Я бы оставил
expire_logs_days
в 3 на Мастере.ПРЕДЛОЖЕНИЕ № 1
Если у вас есть какая-то массовая обработка в течение ночи, возможно, следует запустить массовые процессы на Master с
SET SQL_LOG_BIN=0;
началом сеанса. Это, конечно, не будет повторять раб. Вы можете выполнить одинаковую массовую загрузку параллельно обоим ведомым.ПРЕДЛОЖЕНИЕ № 2
Еще одна вещь, которую вы можете сделать, чтобы управлять накоплением Master двоичных журналов, это.
Беги
SHOW SLAVE STATUS\G
на обоих Рабов. ПосмотритеRelay_Master_Log_File
. Это представляет двоичный журнал на ведущем устройстве, последняя команда которого была выполнена на ведомом устройстве.В этом примере Relay_Master_Log_File - это mysql-bin.009590. Все двоичные журналы до этого могут быть удалены из Master. Вы можете запустить это на Мастере:
Это сотрет старые журналы и все равно оставит реплику в такте.
ПРЕДОСТЕРЕЖЕНИЕ
Двоичные журналы - это файлы, которые последовательно компилируют (например, очередь FIFO) все завершенные транзакции SQL в виде оператора SQL или изменения строки. Релейный журнал - это файл, который собирает двоичные записи журнала с удаленного сервера (известного как Master).
В MySQL Replication
Если вы переключаетесь на Раба, и вы хотите сделать его Мастером
log-bin=mysql-bin
в /etc/my.cnf на РабеВам придется настроить репликацию других подчиненных устройств на недавно назначенного мастера и убедиться, что данные на подчиненном устройстве совпадают с недавно назначенным мастером.
ОБНОВЛЕНИЕ 2012-08-13 17:47 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Согласно документации MySQL по
relay-log
опции , вы должны определить ее. Вот почему:источник