PURGE BINARY LOGS
Оператор удаляет все бинарные файлы журналов , перечисленные в индексном файле журнала до указанного имени файла журнала или временную метку. Удаленные файлы журнала также удаляются из списка, записанного в индексном файле, так что данный файл журнала становится первым в списке.
Я надеюсь, что вы удалили двоичные журналы mysql-bin.000019
с помощью команды
PURGE BINARY LOGS TO 'mysql-bin.000019';
Если вам нужно очистить все журналы, как
PURGE BINARY LOGS TO 'mysql-bin.000025';
Это удалит двоичные журналы до mysql-bin.000025
.
ОБНОВИТЬ
Можешь попробовать
RESET MASTER;
RESET MASTER
Удаляет все двоичные файлы журнала, перечисленные в файле индекса, сбрасывает двоичный файл журнала журнала, чтобы быть пустым, и создает новый двоичный файл журнала
Эффект RESET MASTER
от PURGE BINARY LOGS отличается от двух основных:
RESET MASTER
удаляет все двоичные файлы журнала, перечисленные в файле индекса, оставляя только один пустой двоичный файл журнала с числовым суффиксом .000001, тогда как нумерация не сбрасывается с помощью PURGE BINARY LOGS.
RESET MASTER
не предназначался для использования во время работы любых подчиненных устройств репликации. Поведение RESET MASTER
при использовании во время работы ведомых устройств не определено (и, следовательно, не поддерживается), тогда как PURGE BINARY LOGS
может безопасно использоваться во время работы ведомых устройств репликации.
CAVEAT от RolandoMySQLDBA
Если вы работаете RESET MASTER
с подключенными и работающими подчиненными, поток ввода-вывода каждого подчиненного немедленно теряет свое место. Репликация, таким образом, нарушена, и вам придется потратить время на повторную синхронизацию данных на всех подчиненных устройствах. Если вы хотите безопасно удалить двоичные журналы с мастера, не нарушая целостность репликации, вот что вы делаете:
- Беги
SHOW SLAVE STATUS\G
на каждого Раба.
- Принять к сведению
Relay_Master_Log_File
. Это двоичный журнал, последний оператор которого был успешно выполнен в подчиненном).
- Из всех отображений
SHOW SLAVE STATUS\G
определите, какой из Relay_Master_Log_File
них самый старый (например, «mysql-bin.00123»).
- Вы можете запустить
PURGE BINARY LOGS TO 'mysql-bin.00123';
Ни один из Рабов не потеряет свое место.
Общий эффект? Это оставит двоичные журналы на ведущем устройстве, чьи операторы еще не были выполнены на всех подчиненных устройствах.
CHANGE MASTER TO
, он удалит все журналы ретрансляции. ЕслиRelay_Master_Log_file
естьmysql-bin.00123
, это самый старый двоичный журнал на Master, о котором знает Slave. Еслиmysql-bin.00123
на Master больше не существует, вы можете потерять подходящее место для репликации, если вы запустите какое-либоCHANGE MASTER TO
на подчиненном устройстве, которое не ссылается на новые журналы. Это может быть легко упущено, и вы в конечном итоге нарушаете репликацию вручную.Я не уверен, что это случилось с вами, но в моем случае MySQL прекратил «циклическое» ведение журналов, и файл mysql-bin.index стал «поврежденным» из-за недопустимых записей файла binlog.
В частности, индексный файл начинался с mysql-bin.000001 и доходил до mysql-bin.000220, но затем снова начинался с 001. Когда я сравнил это с файлами на моем сервере, я увидел, что у меня есть файлы с 001 по 022.
Сначала я попытался,
PURGE LOGS TO 'mysql-bin.000022';
но это не сработало.В конце я остановил MySQL и вручную отредактировал индексный файл, пока он не совпал с файлами на моем сервере. Когда я перезапустил MySQL, он очистил файлы binlog в соответствии с
expire_logs_days
настройками и снова начал нормально работать.источник
PURGE LOGS
работает только при идеальной настройке: 1) когда все двоичные журналы являются последовательными, 2) все двоичные журналы названы вmysql-bin.index
файле, 3) нет дополнительных журналов, не упомянутых вmysql-bin.index
. +1 !!!В моем случае
PURGE BINARY
просто ничего не удалялось.Мой раздел использовался на 100% (мне пришлось немного почистить журнал медленных запросов, чтобы было достаточно места для перезапуска mysql), поэтому первое, что я сделал, было изменение,
/etc/my.cnf
чтобы прокомментировать строкуlog-bin=mysql-bin
(в этом не было необходимости) на этом сервере, и я забыл удалить его), а затем я перезапустил mysql (это было необходимо, потому что в очереди были запросы, которые мешалиPURGE BINARY
выполнению).После этого я побежал,
PURGE BINARY
но ничего не случилось. Поэтому я прочитал руководство и выяснил, что:Таким образом, я снова включил
log-bin=mysql-bin
мой/etc/my.cnf
, перезапустил, очистил файлы (теперь с успехом), снова прокомментировал строку и затем перезапустил. После этого файлы были удалены и больше не создавались.источник
Это работает для меня: (версия сервера MySQL: 5.6.14)
Удаляет все двоичные журналы в моей системе.
источник
Вы можете легко удалить ВСЕ журналы с помощью:
Или замените func NOW () на любую дату в кавычках:
Или вы можете автоматизировать это действие с помощью
expire_logs_days = 10
my.cnf. По умолчанию expire_logs_days равно 0 = никогда не удалять журналы.( источник )
источник