Подтвердить что ты не робот

Безопасно ли удалять вращающиеся бинарные журналы MySQL?

У меня есть сервер MySQL с активным двоичным протоколированием. Как только файл дневных журналов "вращается", то есть MySQL, похоже, перестает писать на него и создает новый файл журнала. Например, у меня есть эти файлы в /var/lib/mysql

-rw-rw---- 1 mysql mysql 10485760 Jun  7 09:26 ibdata1
-rw-rw---- 1 mysql mysql  5242880 Jun  7 09:26 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Jun  2 15:20 ib_logfile1
-rw-rw---- 1 mysql mysql  1916844 Jun  6 09:20 mybinlog.000004
-rw-rw---- 1 mysql mysql 61112500 Jun  7 09:26 mybinlog.000005
-rw-rw---- 1 mysql mysql 15609789 Jun  7 13:57 mybinlog.000006
-rw-rw---- 1 mysql mysql       54 Jun  7 09:26 mybinlog.index

и mybinlog.000006 растет.

Можно ли просто взять mybinlog.000004 и mybinlog.000005, закрепить их и перенести на другой сервер, или мне нужно сделать что-то еще раньше?

Какая информация хранится в mybinlog.index? Только информация о последнем двоичном журнале?

ОБНОВЛЕНИЕ: Я понимаю, что могу удалить журналы с помощью PURGE BINARY LOGS, который обновляет файл mybinlog.index. Тем не менее, перед удалением их мне нужно перенести журналы на другой компьютер (я проверяю, действует ли резервная копия на другом компьютере). Чтобы уменьшить размер передачи, я хочу bzip2 файлы. Что сделают PURGE BINARY LOGS, если файлы журналов больше не "там"?

4b9b3361

Ответ 1

Наконец-то я нашел ответ на веб-сайте MySQL. Если кому-то нужна эта информация:

До MySQL 5.0.60 PURGE BINARY LOGS TO и PURGE BINARY LOGS BEFORE не вел себя одинаково (и ни один из них не вел себя правильно), когда файлы двоичного журнала, перечисленные в .index файле, были удалены из системы некоторые другие средства (например, использование rm для Linux). Начиная с MySQL 5.0.60, оба варианта утверждения терпят неудачу с ошибкой в ​​таких случаях. (Ошибка # 18199, Ошибка # 18453) Чтобы обрабатывать такие ошибки, отредактируйте файл .index(который является простым текстовым файлом) вручную, чтобы убедиться, что он содержит только файлы двоичного журнала, которые на самом деле присутствуют, затем снова запустите BURARY LOGS PURGE выражение не выполнено.

Это означает, что я должен редактировать файл .index вручную, и все будет хорошо. Интересно, что .index файл является обычным текстовым файлом. Я даже не заметил этого до сих пор.

Ответ 2

Вы можете удалить старые двоичные журналы. Вместо того, чтобы удалять их напрямую, безопаснее использовать MySQL-оператор PURGE BINARY LOGS, который также обновляет ваш файл mybinlog.index. В этом файле хранятся имена файлов, которые были использованы для двоичного ведения журнала, см.

http://dev.mysql.com/doc/refman/5.0/en/purge-binary-logs.html

Кроме того, вы можете настроить свой MySQL-сервер для автоматического удаления старых двоичных журналов. Задайте переменные max_binlog_size и expire_logs_days в конфигурации вашего сервера соответствующим значениям.

Файлы ibdata и ib_logfile не имеют ничего общего с двоичным протоколированием. Они используются движком хранения innodb. Не ошибитесь в том, что они, похоже, не растут: если у вас на вашем сервере есть таблички innodb, эти файлы важны, и их удаление может привести к потере данных. Вы можете больше узнать о InnoDB в документах:

http://dev.mysql.com/doc/refman/5.0/en/innodb-configuration.html

Ответ 3

mysql> PURGE BINARY LOGS BEFORE NOW() - INTERVAL 3 DAY; 

УДАЛИТЕ ВСЕ файлы bin до 3 ДНЕЙ!

или

PURGE MASTER LOGS BEFORE '2010-10-08 00:00:00';