Spec-Zone.ru › MySQL 8.4

15.4.1.1 Заявление PURGE BINARY LOGS

PURGE BINARY LOGS {
    TO 'log_name'
  | BEFORE datetime_expr
}

Двоичный журнал — это набор файлов, содержащих информацию о модификациях данных, произведённых сервером MySQL. Журнал состоит из набора файлов двоичного журнала и файла индекса (см. Раздел 7.4.4, «Двоичный журнал»).

Заявление PURGE BINARY LOGS удаляет все файлы двоичного журнала, перечисленные в файле индекса журнала, до указанного имени файла журнала или даты. Удалённые файлы журнала также удаляются из списка, записанного в файле индекса, так что данный файл журнала становится первым в списке.

Для использования PURGE BINARY LOGS требуется привилегия BINLOG_ADMIN. Это заявление не имеет эффекта, если сервер не был запущен с параметром --log-bin для включения двоичного протоколирования.

Примеры:

PURGE BINARY LOGS TO 'mysql-bin.010';
PURGE BINARY LOGS BEFORE '2019-04-02 22:46:26';

В варианте BEFORE аргумент datetime_expr должен иметь значение DATETIME (значение в формате 'YYYY-MM-DD hh:mm:ss').

PURGE BINARY LOGS можно безопасно запускать во время репликации. Не нужно останавливать их. Если у вас активная реплика, которая в данный момент читает один из файлов журнала, который вы пытаетесь удалить, это заявление не удаляет используемый файл журнала или файлы журналов, которые позже, но удаляет любые более ранние файлы журналов. В этой ситуации выдается сообщение об ошибке. Однако если реплика не подключена, и вы случайно очищаете один из файлов журнала, который она ещё не успела прочитать, после повторного подключения реплика не сможет выполнить репликацию.

PURGE BINARY LOGS нельзя выполнять во время действия заявления LOCK INSTANCE FOR BACKUP для экземпляра, так как это нарушает правила блокировки резервного копирования, удаляя файлы с сервера.

Для безопасного удаления файлов двоичного журнала следуйте этой процедуре:

  1. На каждой реплике используйте SHOW REPLICA STATUS для проверки, какой файл журнала она читает.

  2. Получите список файлов двоичного журнала на источнике с помощью SHOW BINARY LOGS.

  3. Определите самый ранний файл журнала среди всех реплик. Это целевой файл. Если все реплики обновлены, это последний файл журнала в списке.

  4. Создайте резервную копию всех файлов журнала, которые вы собираетесь удалить. (Этот шаг необязателен, но всегда желателен.)

  5. Удалите все файлы журнала до, но не включая целевой файл.

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

Файлы двоичного журнала автоматически удаляются после истечения срока действия журнала двоичного журнала сервера. Удаление файлов может происходить при запуске и при сбросе двоичного журнала. По умолчанию срок действия двоичного журнала составляет 30 дней. Вы можете указать другой срок действия, используя системную переменную binlog_expire_logs_seconds. Если вы используете репликацию, вы должны указать срок действия, который не ниже максимального времени, которое могут отставать ваши реплики от источника.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/purge-binary-logs.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API