Spec-Zone.ru › MySQL 9.2

6.6.9 mysqlbinlog — Утилита для обработки двоичных журналов событий

  • 6.6.9.1 Формат вывода mysqlbinlog в формате шестнадцатеричного дампа
  • 6.6.9.2 Отображение событий mysqlbinlog для строк
  • 6.6.9.3 Использование mysqlbinlog для резервного копирования двоичных журналов событий
  • 6.6.9.4 Указание идентификатора сервера mysqlbinlog

Двоичный журнал сервера состоит из файлов, содержащих «события», описывающие изменения в содержимом базы данных. Сервер записывает эти файлы в двоичном формате. Чтобы отобразить их содержимое в текстовом формате, используйте утилиту mysqlbinlog. Вы также можете использовать mysqlbinlog для отображения содержимого файлов журнала репликации, записанных сервером-репликой в настройках репликации, поскольку журналы репликации имеют тот же формат, что и двоичные журналы. Более подробно о двоичном журнале и журнале репликации см. в разделе 7.4.4 «Двоичный журнал» и разделе 19.2.4 «Журнал репликации и хранилища метаданных репликации».

Вызовите mysqlbinlog следующим образом:

mysqlbinlog [options] log_file ...

Например, чтобы отобразить содержимое файла двоичного журнала с именем binlog.000003, используйте эту команду:

mysqlbinlog binlog.000003

Вывод включает события, содержащиеся в binlog.000003. Для журнализации на основе операторов информация о событии включает оператор SQL, идентификатор сервера, на котором он был выполнен, отметку времени выполнения оператора, затраченное время и так далее. Для журнализации на основе строк событие указывает изменение строки, а не оператор SQL. Сведения о режимах журнализации см. в разделе 19.2.1 «Форматы репликации».

События предваряются заголовками комментариев, предоставляющими дополнительную информацию. Например:

# at 141
#100309  9:28:36 server id 123  end_log_pos 245
  Query thread_id=3350  exec_time=11  error_code=0

В первой строке число после at указывает смещение файла, или начальную позицию события в файле двоичного журнала.

Вторая строка начинается с даты и времени, указывающих, когда оператор начал выполняться на сервере, откуда исходит событие. Для репликации эта отметка времени передаётся серверам-репликам. server id — значение server_id сервера, откуда исходит событие. end_log_pos указывает, где начинается следующее событие (то есть это конечная позиция текущего события + 1). thread_id указывает, какой поток выполнил событие. exec_time — время выполнения события на сервере-источнике репликации. На сервере-реплике это разница между конечным временем выполнения на реплике и начальным временем выполнения на источнике. Разница служит показателем того, насколько репликация отстаёт от источника. error_code указывает результат выполнения события. Ноль означает, что ошибки не произошло.

Примечание

При использовании групп событий смещения файлов событий могут быть сгруппированы, а комментарии событий могут быть сгруппированы. Не путайте эти сгруппированные события с пустыми смещениями файлов.

Вывод из mysqlbinlog можно повторно выполнить (например, используя его в качестве входных данных для mysql), чтобы повторить операторы в журнале. Это полезно для операций восстановления после неожиданного завершения работы сервера. Для других примеров использования см. обсуждение далее в этом разделе и в разделе 9.5 «Восстановление в определённый момент времени (инкрементальное)». Для выполнения операторов BINLOG внутреннего использования, используемых mysqlbinlog, пользователю требуется привилегия BINLOG_ADMIN (или устаревшая привилегия SUPER), или привилегия REPLICATION_APPLIER плюс соответствующие привилегии для выполнения каждого события журнала.

Вы можете использовать mysqlbinlog для непосредственного чтения файлов двоичного журнала и их применения к локальному серверу MySQL. Вы также можете читать двоичные журналы с удаленного сервера, используя опцию --read-from-remote-server. Для чтения удалённых двоичных журналов параметры соединения можно указать для указания способа подключения к серверу. Эти опции — --host, --password, --port, --protocol, --socket и --user.

Если файлы двоичного журнала зашифрованы, mysqlbinlog не может читать их напрямую, но может читать их с сервера, используя опцию --read-from-remote-server. Файлы двоичного журнала шифруются, когда системная переменная сервера binlog_encryption установлена в значение ON. Заявление SHOW BINARY LOGS показывает, зашифрован ли конкретный файл двоичного журнала или нет. Зашифрованные и незашифрованные файлы двоичного журнала также можно отличить по магическому числу в начале заголовка файла для зашифрованных файлов журналов (0xFD62696E), которое отличается от используемого для незашифрованных файлов журналов (0xFE62696E). Обратите внимание, что mysqlbinlog возвращает соответствующую ошибку, если вы пытаетесь прочитать зашифрованный файл двоичного журнала напрямую, но более старые версии mysqlbinlog вообще не распознают файл как файл двоичного журнала. Дополнительную информацию о шифровании двоичного журнала см. в разделе 19.3.2 «Шифрование файлов двоичного и реплицирующего журналов».

Когда содержимое транзакции двоичного журнала сжато, mysqlbinlog автоматически распаковывает и декодирует содержимое транзакции и отображает его как незажатые события. Когда binlog_transaction_compression установлено в значение ON, содержимое транзакции сжимается и записывается в файл двоичного журнала сервера как одно событие (Transaction_payload_event). С помощью опции --verbose, mysqlbinlog добавляет комментарии, указывающие используемый алгоритм сжатия, исходный сжатый размер данных и размер данных после распаковки.

Примечание

Конечная позиция (end_log_pos), указанная mysqlbinlog для отдельного события, являвшегося частью сжатого содержимого транзакции, совпадает с конечной позицией исходного сжатого содержимого. Следовательно, несколько распакованных событий могут иметь одинаковую конечную позицию.

Собственное сжатие mysqlbinlog работает в меньшей степени, если содержимое транзакции уже сжато, но по-прежнему обрабатывает несжатые транзакции и заголовки.

Дополнительную информацию о сжатии транзакций двоичного журнала см. в разделе 7.4.4.5 «Сжатие транзакций двоичного журнала».

При работе mysqlbinlog с большим двоичным журналом, следует позаботиться о достаточном свободном месте на файловой системе для результирующих файлов. Для настройки каталога, который mysqlbinlog использует для временных файлов, используйте переменную среды TMPDIR.

mysqlbinlog устанавливает значение pseudo_replica_mode в true перед выполнением каких-либо SQL-запросов. Эта системная переменная влияет на обработку транзакций XA, original_commit_timestamp временную метку задержки репликации и системную переменную original_server_version, а также на недопустимые режимы SQL.

mysqlbinlog поддерживает следующие параметры, которые можно указать в командной строке или в группах параметров [mysqlbinlog] и [client] файла параметров. Сведения о файлах параметров, используемых программами MySQL, см. в разделе 6.2.2.2, «Использование файлов параметров».

Таблица 6.20 Параметры mysqlbinlog

Таблица 6.20 Параметры mysqlbinlog
Имя параметра Описание
--base64-output Печать записей двоичного журнала с использованием кодирования base-64
--bind-address Использование указанного сетевого интерфейса для подключения к серверу MySQL
--binlog-row-event-max-size Максимальный размер события двоичного журнала
--character-sets-dir Директория, в которой установлены наборы символов
--compress Сжатие всей информации, передаваемой между клиентом и сервером
--compression-algorithms Разрешённые алгоритмы сжатия для подключений к серверу
--connection-server-id Используется для тестирования и отладки. См. текст для применимых значений по умолчанию и других особенностей
--database Отображение записей только для этой базы данных
--debug Запись отладочного журнала
--debug-check Вывод отладочной информации при выходе программы
--debug-info Вывод отладочной информации, статистики памяти и ЦП при выходе программы
--defaults-extra-file Чтение указанного файла параметров помимо обычных файлов параметров
--defaults-file Чтение только указанного файла параметров
--defaults-group-suffix Значение суффикса группы параметров
--disable-log-bin Отключение двоичного протоколирования
--force-if-open Чтение файлов двоичного журнала, даже если они открыты или не закрыты должным образом
--force-read Если mysqlbinlog читает событие двоичного журнала, которое он не распознаёт, выводится предупреждение
--get-server-public-key Запрос открытого ключа RSA у сервера
--help Отображение сообщения справки и выход
--hexdump Отображение шестнадцатеричного дампа журнала в комментариях
--host Хост, на котором расположен сервер MySQL
--idempotent Принуждает сервер использовать режим idempotent во время обработки обновлений двоичного журнала из этой сессии только
--local-load Подготовка локальных временных файлов для LOAD DATA в указанной директории
--login-path Чтение параметров пути входа из .mylogin.cnf
--no-defaults Не читать файлы параметров
--no-login-paths Не читать пути входа из файла пути входа
--offset Пропуск первых N записей в журнале
--password Пароль для подключения к серверу
--port Номер порта TCP/IP для подключения
--print-defaults Вывод параметров по умолчанию
--print-table-metadata Вывод метаданных таблицы
--protocol Протокол транспорта для использования
--raw Запись событий в сыром (двоичном) формате в выходные файлы
--read-from-remote-master Чтение двоичного журнала с сервера MySQL-источника репликации, а не из локального файла журнала
--read-from-remote-server Чтение двоичного журнала с сервера MySQL, а не из локального файла журнала
--read-from-remote-source Чтение двоичного журнала с сервера MySQL-источника репликации, а не из локального файла журнала
--require-row-format Требование формата двоичного журнала на основе строк
--result-file Направление вывода в указанный файл
--rewrite-db Создание правил переписывания для баз данных при воспроизведении из журналов, записанных в формате на основе строк. Можно использовать несколько раз
--server-id Извлечение только тех событий, созданных сервером с заданным идентификатором сервера
--server-id-bits Указывает mysqlbinlog, как интерпретировать идентификаторы серверов в двоичном журнале, когда журнал был записан mysqld, имеющим server-id-bits, установленные меньше максимального значения; поддерживается только версией mysqlbinlog для MySQL Cluster
--server-public-key-path Имя пути к файлу, содержащему открытый ключ RSA
--set-charset Добавление инструкции SET NAMES charset_name к выводу
--shared-memory-base-name Имя общей памяти для подключений общей памяти (только Windows)
--short-form Отображение только инструкций, содержащихся в журнале
--socket Файл сокета Unix или именованная труба Windows для использования
--ssl-ca Файл, содержащий список доверенных уполномоченных органов сертификации SSL
--ssl-capath Директория, содержащая файлы сертификатов доверенных уполномоченных органов сертификации SSL
--ssl-cert Файл, содержащий сертификат X.509
--ssl-cipher Разрешенные шифры для шифрования подключения
--ssl-fips-mode Включить режим FIPS на стороне клиента
--ssl-key Файл, содержащий ключ X.509
--ssl-mode Желаемое состояние безопасности подключения к серверу
--ssl-session-data Файл, содержащий данные сеанса SSL
--ssl-session-data-continue-on-failed-reuse Устанавливать подключения, если повторное использование сеанса не удалось
--start-datetime Чтение двоичного журнала с первого события со временем, равным или позднее, чем аргумент datetime
--start-position Декодирование двоичного журнала с первого события с позицией, равной или большей, чем аргумент
--stop-datetime Остановка чтения двоичного журнала на первом событии со временем, равным или позднее, чем аргумент datetime
--stop-never Оставаться подключённым к серверу после чтения последнего файла двоичного журнала
--stop-never-slave-server-id Идентификатор сервера-ведомого для отчёта при подключении к серверу
--stop-position Остановка декодирования двоичного журнала на первом событии с позицией, равной или большей, чем аргумент
--tls-ciphersuites Разрешённые наборы шифров TLSv1.3 для шифрованных подключений
--tls-sni-servername Имя сервера, предоставленное клиентом
--tls-version Разрешённые протоколы TLS для шифрованных подключений
--to-last-log Не останавливаться в конце запрошенного двоичного журнала с сервера MySQL, а продолжать печать до конца последнего двоичного журнала
--user Имя пользователя MySQL для подключения к серверу
--verbose Восстановление событий на основе строк в виде SQL-инструкций
--verify-binlog-checksum Проверка контрольных сумм в двоичном журнале
--version Вывести информацию о версии и завершить работу
--zstd-compression-level Уровень сжатия для соединений с сервером, использующих сжатие zstd

  • --help, -?

    Формат командной строки --help

    Вывести справку и завершить работу.

  • --base64-output=value

    Формат командной строки --base64-output=value
    Тип Строка
    Значение по умолчанию AUTO
    Допустимые значения

    AUTO

    NEVER

    DECODE-ROWS

    Эта опция определяет, когда события должны отображаться, закодированные как строки base-64, используя операторы BINLOG. Опция имеет следующие допустимые значения (без учёта регистра):

    • AUTO ("автоматически") или UNSPEC ("не указано") отображает операторы BINLOG автоматически, когда это необходимо (то есть, для событий описания формата и событий строк). Если опция --base64-output не указана, эффект такой же, как и у --base64-output=AUTO.

      Примечание

      Автоматическое отображение BINLOG является единственно безопасным поведением, если вы планируете использовать вывод mysqlbinlog для повторного выполнения содержимого файла бинарного журнала. Другие значения опций предназначены только для отладки или тестирования, поскольку они могут генерировать вывод, который не включает все события в исполняемой форме.

    • NEVER приводит к тому, что операторы BINLOG не отображаются. mysqlbinlog завершается с ошибкой, если обнаружено событие строки, которое должно отображаться с использованием BINLOG.

    • DECODE-ROWS указывает mysqlbinlog, что вы хотите, чтобы события строк декодировались и отображались как закомментированные операторы SQL, также указав опцию --verbose. Как и NEVER, DECODE-ROWS подавляет отображение операторов BINLOG, но в отличие от NEVER, не завершается с ошибкой, если обнаружено событие строки.

    Примеры, показывающие влияние --base64-output и --verbose на вывод событий строк, см. в Разделе 6.6.9.2, «Отображение событий строк mysqlbinlog».

  • --bind-address=ip_address

    Формат командной строки --bind-address=ip_address

    На компьютере с несколькими сетевыми интерфейсами используйте эту опцию для выбора интерфейса, который будет использоваться для подключения к серверу MySQL.

  • --binlog-row-event-max-size=N

    Формат командной строки --binlog-row-event-max-size=#
    Тип Числовое
    Значение по умолчанию 4294967040
    Минимальное значение 256
    Максимальное значение 18446744073709547520

    Укажите максимальный размер события бинарного журнала на основе строк в байтах. Строки группируются в события меньшего размера, если это возможно. Значение должно быть кратно 256. Значение по умолчанию — 4 ГБ.

  • --character-sets-dir=dir_name

    Формат командной строки --character-sets-dir=dir_name
    Тип Имя каталога

    Каталог, в котором установлены кодировки символов. См. Раздел 12.15, «Настройка кодировки символов».

  • --compress

    Формат командной строки --compress[={OFF|ON}]
    Устарело Да
    Тип Логическое
    Значение по умолчанию OFF

    Сжимать всю информацию, передаваемую между клиентом и сервером, если это возможно. См. Раздел 6.2.8, «Управление сжатием соединения».

    Эта опция устарела. Ожидается, что она будет удалена в будущей версии MySQL. См. Настройка устаревшего сжатия соединения.

  • --compression-algorithms=value

    Формат командной строки --compression-algorithms=value
    Тип Множество
    Значение по умолчанию uncompressed
    Допустимые значения

    zlib

    zstd

    uncompressed

    Допустимые алгоритмы сжатия для соединений с сервером. Доступные алгоритмы такие же, как и для системной переменной protocol_compression_algorithms. Значение по умолчанию — uncompressed.

    Для получения дополнительной информации см. Раздел 6.2.8, «Управление сжатием соединения».

  • --connection-server-id=server_id

    Формат командной строки --connection-server-id=#]
    Тип Целое число
    Значение по умолчанию 0 (1)
    Минимальное значение 0 (1)
    Максимальное значение 4294967295

    --connection-server-id указывает идентификатор сервера, который сообщает mysqlbinlog при подключении к серверу. Его можно использовать для предотвращения конфликта с идентификатором сервера-реплики или другого процесса mysqlbinlog.

    Если указана опция --read-from-remote-server, mysqlbinlog сообщает идентификатор сервера 0, который указывает серверу отключиться после отправки последнего файла журнала (поведение без блокировки). Если также указана опция --stop-never для поддержания соединения с сервером, mysqlbinlog по умолчанию сообщает идентификатор сервера 1 вместо 0, и --connection-server-id может использоваться для замены этого идентификатора сервера, если необходимо. См. Раздел 6.6.9.4, «Указание идентификатора сервера mysqlbinlog».

END_OF_DOCUMENT_MARKER
  • --database=db_name, -d db_name

    Формат командной строки --database=db_name
    Тип Строка

    Этот параметр заставляет mysqlbinlog выводить записи из двоичного журнала (только локальный журнал), которые появляются, когда db_name выбран в качестве базы данных по умолчанию USE.

    Параметр --database для mysqlbinlog аналогичен параметру --binlog-do-db для mysqld, но может быть использован для указания только одной базы данных. Если --database задан несколько раз, используется только последнее значение.

    Эффекты этого параметра зависят от того, используется ли формат логирования на основе операторов или на основе строк, так же как эффекты --binlog-do-db зависят от использования логирования на основе операторов или на основе строк.

    Логирование на основе операторов. Параметр --database работает следующим образом:

    • Пока db_name является базой данных по умолчанию, операторы выводятся, независимо от того, изменяют ли они таблицы в db_name или в другой базе данных.

    • Если db_name не выбрана в качестве базы данных по умолчанию, операторы не выводятся, даже если они изменяют таблицы в db_name.

    • Есть исключение для CREATE DATABASE, ALTER DATABASE и DROP DATABASE. База данных, которая создается, изменяется или удаляется, считается базой данных по умолчанию при определении, нужно ли выводить оператор.

    Предположим, что двоичный журнал был создан путем выполнения этих операторов с использованием логирования на основе операторов:

    INSERT INTO test.t1 (i) VALUES(100);
    INSERT INTO db2.t2 (j)  VALUES(200);
    USE test;
    INSERT INTO test.t1 (i) VALUES(101);
    INSERT INTO t1 (i)      VALUES(102);
    INSERT INTO db2.t2 (j)  VALUES(201);
    USE db2;
    INSERT INTO test.t1 (i) VALUES(103);
    INSERT INTO db2.t2 (j)  VALUES(202);
    INSERT INTO t2 (j)      VALUES(203);
    

    mysqlbinlog --database=test не выводит первые два INSERT оператора, так как нет базы данных по умолчанию. Он выводит три INSERT оператора после USE test, но не три INSERT оператора после USE db2.

    mysqlbinlog --database=db2 не выводит первые два INSERT оператора, так как нет базы данных по умолчанию. Он не выводит три INSERT оператора после USE test, но выводит три INSERT оператора после USE db2.

    Логирование на основе строк. mysqlbinlog выводит только записи, которые изменяют таблицы, принадлежащие db_name. База данных по умолчанию не влияет на это. Предположим, что двоичный журнал, только что описанный, был создан с использованием логирования на основе строк, а не на основе операторов. mysqlbinlog --database=test выводит только те записи, которые изменяют t1 в базе данных test, независимо от того, был ли выдан USE или какой является базой данных по умолчанию.

    Если сервер работает с binlog_format, установленным на MIXED, и вы хотите использовать mysqlbinlog с параметром --database, вы должны убедиться, что измененные таблицы находятся в базе данных, выбранной оператором USE. (В частности, не следует использовать межбазовые обновления.)

    При использовании вместе с параметром --rewrite-db, параметр --rewrite-db применяется первым; затем применяется параметр --database, используя переименованное имя базы данных. Порядок предоставления параметров в этом случае не имеет значения.

  • --debug[=debug_options], -# [debug_options]

    Формат командной строки --debug[=debug_options]
    Тип Строка
    Значение по умолчанию d:t:o,/tmp/mysqlbinlog.trace

    Записать журнал отладки. Типичная строка debug_options — d:t:o,file_name. По умолчанию d:t:o,/tmp/mysqlbinlog.trace.

    Этот параметр доступен только в том случае, если MySQL был скомпилирован с использованием WITH_DEBUG. Бинарные файлы релизов MySQL, предоставленные Oracle, не скомпилированы с использованием этого параметра.

  • --debug-check

    Формат командной строки --debug-check
    Тип Булево
    Значение по умолчанию FALSE

    Вывести некоторую отладочную информацию при завершении программы.

    Этот параметр доступен только в том случае, если MySQL был скомпилирован с использованием WITH_DEBUG. Бинарные файлы релизов MySQL, предоставленные Oracle, не скомпилированы с использованием этого параметра.

  • --debug-info

    Формат командной строки --debug-info
    Тип Булево
    Значение по умолчанию FALSE

    Выводить отладочную информацию и статистику использования памяти и ЦП при завершении программы.

    Этот параметр доступен только в том случае, если MySQL был скомпилирован с использованием WITH_DEBUG. Бинарные файлы релизов MySQL, предоставленные Oracle, не скомпилированы с использованием этого параметра.

  • --default-auth=plugin

    Формат командной строки --default-auth=plugin
    Тип Строка

    Подсказка о том, какой плагин аутентификации клиента использовать. См. Раздел 8.2.17, «Плагины аутентификации».

  • --defaults-extra-file=file_name

    Формат командной строки --defaults-extra-file=file_name
    Тип Имя файла

    Прочитать этот файл параметров после глобального файла параметров, но (в Unix) перед файлом параметров пользователя. Если файла не существует или он недоступен, произойдет ошибка. Если file_name не является абсолютным именем файла, оно интерпретируется относительно текущей директории.

    Дополнительную информацию об этом и других параметрах файла см. в Разделе 6.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».

  • --defaults-file=file_name

    Командная строка --defaults-file=file_name
    Тип Имя файла

    Используйте только указанный файл параметров. Если файл не существует или недоступен, произойдет ошибка. Если file_name не является абсолютным путем, он интерпретируется относительно текущей директории.

    Исключение: даже с --defaults-file, клиентские программы читают .mylogin.cnf.

    Дополнительную информацию об этом и других параметрах файла параметров см. в Разделе 6.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».

  • --defaults-group-suffix=str

    Командная строка --defaults-group-suffix=str
    Тип Строка

    Читать не только обычные группы параметров, но и группы с обычными именами и суффиксом str. Например, mysqlbinlog обычно читает группы [client] и [mysqlbinlog]. Если этот параметр задан как --defaults-group-suffix=_other, mysqlbinlog также читает группы [client_other] и [mysqlbinlog_other].

    Дополнительную информацию об этом и других параметрах файла параметров см. в Разделе 6.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».

  • --disable-log-bin, -D

    Командная строка --disable-log-bin

    Отключить двоичный лог. Это полезно для предотвращения бесконечного цикла, если вы используете параметр --to-last-log и отправляете вывод на тот же сервер MySQL. Этот параметр также полезен при восстановлении после непредвиденного выхода, чтобы избежать дублирования записанных вами инструкций.

    Этот параметр заставляет mysqlbinlog включить инструкцию SET sql_log_bin = 0 в свой вывод для отключения двоичного протоколирования оставшегося вывода. Работа с системной переменной sql_log_bin является ограниченной операцией, поэтому для этого параметра требуется достаточный уровень привилегий для установки ограниченных переменных сессии. См. Раздел 7.1.9.1, «Привилегии на системные переменные».

  • --exclude-gtids=gtid_set

    Командная строка --exclude-gtids=gtid_set
    Тип Строка
    Значение по умолчанию

    Не отображать ни одну из групп, перечисленных в gtid_set.

  • --force-if-open, -F

    Командная строка --force-if-open

    Читать файлы бинарного журнала, даже если они открыты или не были закрыты должным образом (IN_USE флаг установлен); не завершаться ошибкой, если файл заканчивается усеченным событием.

    Флаг IN_USE устанавливается только для бинарного журнала, который в настоящее время записывает сервер; если сервер упал, флаг остается установленным до тех пор, пока сервер не запустится и не восстановит бинарный журнал. Без этого параметра mysqlbinlog откажется от обработки файла с этим флагом. Поскольку сервер может быть в процессе записи файла, усечение последнего события считается нормальным.

  • --force-read, -f

    Командная строка --force-read

    С этим параметром, если mysqlbinlog считывает событие бинарного журнала, которое он не распознает, он выводит предупреждение, игнорирует событие и продолжает работу. Без этого параметра mysqlbinlog прекращает работу, если читает такое событие.

  • --get-server-public-key

    Командная строка --get-server-public-key
    Тип Булево

    Запрос у сервера открытого ключа, необходимого для обмена паролем на основе пар ключей RSA. Этот параметр применяется к клиентам, которые аутентифицируются с помощью плагина аутентификации caching_sha2_password. Для этого плагина сервер не отправляет открытый ключ, если его не запросить. Этот параметр игнорируется для учетных записей, которые не аутентифицируются с помощью этого плагина. Он также игнорируется, если обмен паролями на основе RSA не используется, как в случае, когда клиент подключается к серверу с помощью защищенного соединения.

    Если задан --server-public-key-path=file_name и указывает допустимый файл открытого ключа, он имеет приоритет над --get-server-public-key.

    Дополнительная информация о плагине caching_sha2_password находится в Разделе 8.4.1.1, «Плагин аутентификации Caching SHA-2».

  • --hexdump, -H

    Командная строка --hexdump

    Отображение шестнадцатеричного дампа журнала в комментариях, как описано в Разделе 6.6.9.1, «Формат шестнадцатеричного дампа mysqlbinlog». Шестнадцатеричный вывод может быть полезен для отладки репликации.

  • --host=host_name, -h host_name

    Командная строка --host=host_name
    Тип Строка
    Значение по умолчанию localhost

    Получить бинарный журнал с сервера MySQL на указанном хосте.

  • --idempotent

    Командная строка --idempotent
    Тип Булево
    Значение по умолчанию true

    Указать серверу MySQL использовать режим идемпотентности при обработке обновлений; это приводит к подавлению любых ошибок дублирования ключа или отсутствия ключа, которые сервер встречает в текущей сессии при обработке обновлений. Этот параметр может быть полезен всякий раз, когда желательно или необходимо повторно воспроизвести один или несколько бинарных журналов на сервер MySQL, который может не содержать всех данных, на которые ссылаются журналы.

    Сфера действия этого параметра включает только текущего клиента mysqlbinlog и сессии.

  • --include-gtids=gtid_set

    Командная строка --include-gtids=gtid_set
    Тип Строка
    Значение по умолчанию

    Отображать только группы, перечисленные в gtid_set.

  • --local-load=dir_name, -l dir_name

    Формат командной строки --local-load=dir_name
    Тип Имя каталога

    Для операций загрузки данных, соответствующих операторам LOAD DATA, mysqlbinlog извлекает файлы из событий бинарного журнала, записывает их как временные файлы в локальную файловую систему и записывает операторы LOAD DATA LOCAL, чтобы вызвать загрузку файлов. По умолчанию, mysqlbinlog записывает эти временные файлы в каталог, зависящий от операционной системы. Параметр --local-load можно использовать для явного указания каталога, в котором mysqlbinlog должен подготавливать локальные временные файлы.

    Поскольку другие процессы могут записывать файлы в стандартный каталог, зависящий от системы, рекомендуется указать параметр --local-load для mysqlbinlog, чтобы указать другой каталог для файлов данных, а затем указать тот же каталог, указав параметр --load-data-local-dir для mysql при обработке вывода из mysqlbinlog. Например:

    mysqlbinlog --local-load=/my/local/data ...
        | mysql --load-data-local-dir=/my/local/data ...
    
    Важно

    Эти временные файлы не удаляются автоматически mysqlbinlog или любой другой программой MySQL.

  • --login-path=name

    Формат командной строки --login-path=name
    Тип Строка

    Читает параметры из указанного пути входа в файл пути входа .mylogin.cnf. “Путь входа” — это группа параметров, содержащая параметры, указывающие, к какому серверу MySQL подключаться и под каким аккаунтом выполнять аутентификацию. Для создания или изменения файла пути входа используйте утилиту mysql_config_editor. См. Раздел 6.6.7, «mysql_config_editor — Утилита конфигурации MySQL».

    Для получения дополнительной информации об этом и других параметрах файла параметров см. Раздел 6.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».

  • --no-login-paths

    Формат командной строки --no-login-paths

    Пропускает чтение параметров из файла пути входа.

    См. --login-path для получения дополнительной информации.

    Для получения дополнительной информации об этом и других параметрах файла параметров см. Раздел 6.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».

  • --no-defaults

    Формат командной строки --no-defaults

    Не читать никакие файлы параметров. Если запуск программы завершается ошибкой из-за чтения неизвестных параметров из файла параметров, --no-defaults можно использовать, чтобы предотвратить их чтение.

    Исключением является то, что файл .mylogin.cnf читается во всех случаях, если он существует. Это позволяет указывать пароли более безопасным способом, чем в командной строке, даже когда используется --no-defaults. Для создания .mylogin.cnf используйте утилиту mysql_config_editor. См. Раздел 6.6.7, «mysql_config_editor — Утилита конфигурации MySQL».

    Для получения дополнительной информации об этом и других параметрах файла параметров см. Раздел 6.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».

  • --offset=N, -o N

    Формат командной строки --offset=#
    Тип Числовое

    Пропускает первые N записи в журнале.

  • --open-files-limit=N

    Формат командной строки --open-files-limit=#
    Тип Числовое
    Значение по умолчанию 8
    Минимальное значение 1
    Максимальное значение [platform dependent]

    Указывает количество дескрипторов открытых файлов для резервирования.

  • --password[=password], -p[password]

    Формат командной строки --password[=password]
    Тип Строка

    Пароль учетной записи MySQL, используемой для подключения к серверу. Значение пароля является необязательным. Если он не указан, mysqlbinlog запрашивает его. Если указан, не должно быть пробела между --password= или -p и последующим паролем. Если параметр пароля не указан, по умолчанию пароль не отправляется.

    Указание пароля в командной строке следует считать небезопасным. Чтобы избежать указания пароля в командной строке, используйте файл параметров. См. Раздел 8.1.2.1, «Рекомендации для конечных пользователей по безопасности паролей».

    Чтобы явно указать, что пароля нет и что mysqlbinlog не должен запрашивать его, используйте параметр --skip-password.

  • --plugin-dir=dir_name

    Формат командной строки --plugin-dir=dir_name
    Тип Имя каталога

    Каталог, в котором следует искать подключаемые модули. Укажите этот параметр, если параметр --default-auth используется для указания подключаемого модуля аутентификации, но mysqlbinlog не находит его. См. Раздел 8.2.17, «Подключаемая аутентификация».

  • --port=port_num, -P port_num

    Формат командной строки --port=port_num
    Тип Числовое
    Значение по умолчанию 3306

    Номер порта TCP/IP, используемый для подключения к удаленному серверу.

  • --print-defaults

    Командная строка --print-defaults

    Выводит имя программы и все опции, полученные из файлов параметров.

    Дополнительную информацию об этом и других параметрах файла см. в разделе 6.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».

  • --print-table-metadata

    Командная строка --print-table-metadata

    Выводит метаданные, относящиеся к таблицам, из двоичного журнала. Настройте количество метаданных, относящихся к таблицам, залогированных в двоичном журнале, с помощью binlog-row-metadata.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Командная строка --protocol=type
    Тип Строка
    Значение по умолчанию [see text]
    Допустимые значения

    TCP

    SOCKET

    PIPE

    MEMORY

    Протокол передачи для подключения к серверу. Это полезно, когда другие параметры подключения приводят к использованию протокола, отличного от желаемого. Подробную информацию о допустимых значениях см. в разделе 6.2.7, «Протоколы передачи соединения».

  • --raw

    Командная строка --raw
    Тип Булево
    Значение по умолчанию FALSE

    По умолчанию, mysqlbinlog считывает двоичные файлы журналов и записывает события в текстовом формате. Параметр --raw сообщает mysqlbinlog записать их в их исходном двоичном формате. Для этого также необходимо использовать --read-from-remote-server, поскольку файлы запрашиваются у сервера. mysqlbinlog записывает один выходной файл для каждого файла, считанного с сервера. Параметр --raw можно использовать для создания резервной копии двоичного журнала сервера. С параметром --stop-never резервная копия является «живой», так как mysqlbinlog остается подключенным к серверу. По умолчанию выходные файлы записываются в текущей директории с теми же именами, что и исходные файлы журналов. Имена выходных файлов можно изменить с помощью параметра --result-file. Дополнительная информация приведена в разделе 6.6.9.3, «Использование mysqlbinlog для резервного копирования двоичных журналов».

  • --read-from-remote-source=type

    Командная строка --read-from-remote-source=type

    Этот параметр считывает двоичные журналы с MySQL-сервера с использованием команд COM_BINLOG_DUMP или COM_BINLOG_DUMP_GTID, соответственно устанавливая значение параметра на BINLOG-DUMP-NON-GTIDS или BINLOG-DUMP-GTIDS. Если --read-from-remote-source=BINLOG-DUMP-GTIDS используется совместно с --exclude-gtids, транзакции могут быть отфильтрованы на источнике, избегая ненужного сетевого трафика.

    Параметры подключения используются с этими параметрами или с параметром --read-from-remote-server. Эти параметры — --host, --password, --port, --protocol, --socket и --user. Если ни один из параметров удаленного подключения не указан, параметры подключения игнорируются.

    Для использования этих параметров требуется привилегия REPLICATION SLAVE.

  • --read-from-remote-master=type

    Командная строка --read-from-remote-master=type
    Устаревший Да

    Устаревшее синоним для --read-from-remote-source.

  • --read-from-remote-server=file_name, -R

    Командная строка --read-from-remote-server=file_name

    Считывает двоичный журнал с MySQL-сервера, а не из локального файла журнала. Для этого параметра необходимо, чтобы удаленный сервер работал. Он работает только с двоичными файлами журналов на удаленном сервере, а не с файлами релейных журналов. Принимает имя двоичного файла журнала (включая числовой суффикс) без пути к файлу.

    Параметры подключения используются с этим параметром или с параметром --read-from-remote-source. Эти параметры — --host, --password, --port, --protocol, --socket и --user. Если ни один из параметров удаленного подключения не указан, параметры подключения игнорируются.

    Для использования этого параметра требуется привилегия REPLICATION SLAVE.

    Этот параметр похож на --read-from-remote-source=BINLOG-DUMP-NON-GTIDS.

  • --result-file=name, -r name

    Командная строка --result-file=name

    Без параметра --raw этот параметр указывает файл, в который mysqlbinlog записывает текстовый вывод. С параметром --raw mysqlbinlog записывает один двоичный выходной файл для каждого файла журнала, переданного с сервера, записывая их по умолчанию в текущей директории с теми же именами, что и исходный файл журнала. В этом случае значение параметра --result-file обрабатывается как префикс, изменяющий имена выходных файлов.

  • --require-row-format

    Формат командной строки --require-row-format
    Тип Булево
    Значение по умолчанию false

    Требовать формат двоичного журналирования на основе строк для событий. Этот параметр навязывает события репликации на основе строк для вывода mysqlbinlog. Поток событий, полученный с этим параметром, будет принят каналом репликации, защищённым с помощью параметра REQUIRE_ROW_FORMAT инструкции CHANGE REPLICATION SOURCE TO. binlog_format=ROW должен быть установлен на сервере, где был записан двоичный журнал. При указании этого параметра mysqlbinlog завершает работу с сообщением об ошибке, если встречает какие-либо события, запрещённые ограничениями REQUIRE_ROW_FORMAT, включая инструкции LOAD DATA INFILE, создание или удаление временных таблиц, INTVAR, RAND или USER_VAR событий, а также события, не основанные на строках, в рамках транзакции DML. mysqlbinlog также выводит инструкцию SET @@session.require_row_format в начале своего вывода, чтобы применить ограничения при выполнении вывода, и не выводит инструкцию SET @@session.pseudo_thread_id.

  • --rewrite-db='from_name->to_name'

    Формат командной строки --rewrite-db='oldname->newname'
    Тип Строка
    Значение по умолчанию [none]

    При чтении из журнала на основе строк или инструкций, переписывать все вхождения from_name на to_name. Переписывание выполняется для строк в журналах на основе строк, а также для клаузов USE в журналах на основе инструкций.

    Предупреждение

    Инструкции, в которых имена таблиц квалифицированы именами баз данных, не переписываются для использования нового имени при использовании этого параметра.

    Правило переписывания, используемое в качестве значения для этого параметра, является строкой, имеющей форму 'from_name->to_name', как показано ранее, и по этой причине должна быть заключена в кавычки.

    Для использования нескольких правил переписывания укажите параметр несколько раз, как показано здесь:

    mysqlbinlog --rewrite-db='dbcurrent->dbold' --rewrite-db='dbtest->dbcurrent' \
        binlog.00001 > /tmp/statements.sql
    

    При совместном использовании с параметром --database, параметр --rewrite-db применяется первым; затем параметр --database применяется, используя изменённое имя базы данных. Порядок предоставления параметров в этом отношении не имеет значения.

    Это означает, что, например, если mysqlbinlog запускается с --rewrite-db='mydb->yourdb' --database=yourdb, то все обновления любых таблиц в базах данных mydb и yourdb включаются в вывод. С другой стороны, если он запускается с --rewrite-db='mydb->yourdb' --database=mydb, то mysqlbinlog не выводит никаких инструкций: поскольку все обновления mydb сначала переписываются как обновления yourdb перед применением параметра --database, не остаётся обновлений, соответствующих --database=mydb.

  • --server-id=id

    Формат командной строки --server-id=id
    Тип Числовой

    Отобразить только те события, созданные сервером с заданным идентификатором сервера.

  • --server-id-bits=N

    Формат командной строки --server-id-bits=#
    Тип Числовой
    Значение по умолчанию 32
    Минимальное значение 7
    Максимальное значение 32

    Использовать только первые N битов server_id для идентификации сервера. Если двоичный журнал был записан mysqld с установленным server-id-bits меньше 32 и пользовательские данные хранятся в старшем бите, запуск mysqlbinlog с установленным --server-id-bits на 32 позволит увидеть эти данные.

    Этот параметр поддерживается только версией mysqlbinlog, поставляемой с дистрибутивом NDB Cluster или с поддержкой NDB Cluster.

  • --server-public-key-path=file_name

    Формат командной строки --server-public-key-path=file_name
    Тип Имя файла

    Имя пути к файлу в формате PEM, содержащему копию открытого ключа клиента, необходимую серверу для обмена паролями на основе пары ключей RSA. Этот параметр применяется к клиентам, которые аутентифицируются с помощью плагина аутентификации sha256_password или caching_sha2_password. Этот параметр игнорируется для учетных записей, которые не аутентифицируются с помощью одного из этих плагинов. Он также игнорируется, если обмен паролями на основе RSA не используется, как в случае, когда клиент подключается к серверу по защищённому соединению.

    Если --server-public-key-path=file_name указан и указывает на действительный файл открытого ключа, он имеет приоритет над --get-server-public-key.

    Для sha256_password этот параметр применяется только в том случае, если MySQL был скомпилирован с использованием OpenSSL.

    Сведения о плагинах sha256_password и caching_sha2_password см. в разделе 8.4.1.2, «Плагин аутентификации SHA-256» и разделе 8.4.1.1, «Плагин аутентификации кэширования SHA-2».

  • --set-charset=charset_name

    Формат командной строки --set-charset=charset_name
    Тип Строка

    Добавить инструкцию SET NAMES charset_name в вывод для указания кодировки символов, которая будет использоваться для обработки файлов журналов.

  • --shared-memory-base-name=name

    Формат командной строки --shared-memory-base-name=name
    Специфично для платформы Windows

    В Windows, имя разделяемой памяти для подключений, использующих разделяемую память с локальным сервером. Значение по умолчанию — MYSQL. Имя разделяемой памяти чувствительно к регистру.

    Этот параметр применяется только в том случае, если сервер был запущен с включённой переменной системы shared_memory для поддержки подключений через разделяемую память.

  • --short-form, -s

    Формат командной строки --short-form

    Отобразить только инструкции, содержащиеся в журнале, без дополнительной информации или событий на основе строк. Только для тестирования и не должно использоваться в производственных системах. Устарело и ожидается удаление в будущих версиях.

  • --skip-gtids[=(true|false)]

    Формат командной строки --skip-gtids[=true|false]
    Тип Булево
    Значение по умолчанию false

    Не включайте GTIDs из файлов бинарного журнала в файл вывода дампа. Например:

    mysqlbinlog --skip-gtids binlog.000001 >  /tmp/dump.sql
    mysql -u root -p -e "source /tmp/dump.sql"
    

    Обычно этот параметр не следует использовать в рабочей среде или при восстановлении, за исключением особых, редких случаев, когда GTIDs активно нежелательны. Например, администратор может захотеть дублировать выбранные транзакции (например, определения таблиц) из одного развертывания в другое не связанное развертывание, которое не будет осуществлять репликацию к или из оригинального. В таком случае, --skip-gtids можно использовать, чтобы позволить администратору применить транзакции так, как если бы они были новыми, и гарантировать, что развертывания останутся не связанными. Однако этот параметр следует использовать только в том случае, если включение GTIDs вызывает известную проблему для вашего варианта использования.

  • --socket=path, -S path

    Формат командной строки --socket={file_name|pipe_name}
    Тип Строка

    Для соединений с localhost, используемый файл сокета Unix или, в Windows, имя именованной трубы.

    В Windows этот параметр применим только в том случае, если сервер был запущен с системной переменной named_pipe, чтобы поддерживать подключения через именованные трубы. Кроме того, пользователь, устанавливающий соединение, должен быть членом группы Windows, указанной в системной переменной named_pipe_full_access_group.

  • --ssl*

    Параметры, начинающиеся с --ssl, указывают, следует ли подключаться к серверу с шифрованием, и указывают, где найти ключи и сертификаты SSL. См. Параметры командной строки для шифрованных соединений.

  • --ssl-fips-mode={OFF|ON|STRICT}

    Формат командной строки --ssl-fips-mode={OFF|ON|STRICT}
    Устаревший Да
    Тип Перечисление
    Значение по умолчанию OFF
    Допустимые значения

    OFF

    ON

    STRICT

    Управляет включением режима FIPS на стороне клиента. Параметр --ssl-fips-mode отличается от других параметров --ssl-xxx тем, что он не используется для установления шифрованных соединений, а для определения, какие криптографические операции разрешить. См. Раздел 8.8, “Поддержка FIPS”.

    Разрешены следующие значения --ssl-fips-mode:

    • OFF: Отключить режим FIPS.

    • ON: Включить режим FIPS.

    • STRICT: Включить режим FIPS “строгий”.

    Примечание

    Если модуль FIPS OpenSSL не доступен, единственное допустимое значение для --ssl-fips-mode — OFF. В этом случае установка --ssl-fips-mode на ON или STRICT заставляет клиент выдавать предупреждение при запуске и работать в режиме, не поддерживающем FIPS.

    Этот параметр устарел. Ожидайте его удаления в будущих версиях MySQL.

  • --start-datetime=datetime

    Формат командной строки --start-datetime=datetime
    Тип Дата и время

    Начать чтение бинарного журнала с первого события, имеющего метку времени, равную или более позднюю, чем аргумент datetime. Значение datetime относится к часовому поясу локальной машины, где вы выполняете mysqlbinlog. Значение должно быть в формате, принятом для типов данных DATETIME или TIMESTAMP. Например:

    mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003
    

    Этот параметр полезен для восстановления по состоянию на определенный момент времени. См. Раздел 9.5, “Восстановление по состоянию на определенный момент времени (инкрементное)”.

  • --start-position=N, -j N

    Формат командной строки --start-position=#
    Тип Числовое

    Начать декодирование бинарного журнала с позиции лога N, включая в вывод все события, начинающиеся с позиции N или позже. Позиция — это байтовая позиция в файле журнала, а не счетчик событий; она должна указывать на начальную позицию события, чтобы получить полезный вывод. Этот параметр относится к первому файлу журнала, указанному в командной строке.

    Максимальное значение, поддерживаемое для этого параметра, составляет 18446744073709551616 (264-1), если также не используются --read-from-remote-server или --read-from-remote-source, в противном случае максимальное значение равно 4294967295.

    Этот параметр полезен для восстановления по состоянию на определенный момент времени. См. Раздел 9.5, “Восстановление по состоянию на определенный момент времени (инкрементное)”.

  • --stop-datetime=datetime

    Формат командной строки --stop-datetime=datetime

    Останов чтения бинарного журнала на первом событии, имеющем метку времени, равную или более позднюю, чем аргумент datetime. См. описание параметра --start-datetime для информации о значении datetime.

    Этот параметр полезен для восстановления по состоянию на определенный момент времени. См. Раздел 9.5, “Восстановление по состоянию на определенный момент времени (инкрементное)”.

  • --stop-never

    Формат командной строки --stop-never
    Тип Boolean
    Значение по умолчанию FALSE

    Эта опция используется с --read-from-remote-server. Она указывает mysqlbinlog оставаться подключенным к серверу. В противном случае mysqlbinlog завершается, когда последний файл журнала был передан с сервера. --stop-never подразумевает --to-last-log, поэтому в командной строке необходимо указать только первый файл журнала для передачи.

    --stop-never обычно используется с --raw для создания резервной копии бинарного журнала в режиме реального времени, но также может использоваться без --raw для поддержания непрерывного текстового отображения событий журнала по мере их генерации сервером.

    С --stop-never, по умолчанию, mysqlbinlog сообщает идентификатор сервера 1 при подключении к серверу. Используйте --connection-server-id, чтобы явно указать альтернативный идентификатор для сообщения. Это может быть использовано для предотвращения конфликта с идентификатором сервера-реплики или другого процесса mysqlbinlog. См. Раздел 6.6.9.4, «Указание идентификатора сервера mysqlbinlog».

  • --stop-never-slave-server-id=id

    Формат командной строки --stop-never-slave-server-id=#
    Тип Numeric
    Значение по умолчанию 65535
    Минимальное значение 1

    Эта опция устарела; ожидается, что она будет удалена в будущей версии. Вместо этого используйте опцию --connection-server-id для указания идентификатора сервера для mysqlbinlog для сообщения.

  • --stop-position=N

    Формат командной строки --stop-position=#
    Тип Numeric

    Остановите декодирование бинарного журнала в позиции журнала N, исключив из вывода любые события, которые начинаются в позиции N или после. Позиция представляет собой байтовую точку в файле журнала, а не счетчик событий; она должна указывать на место после начальной позиции последнего события, которое вы хотите включить в вывод. Событие, начинающееся до позиции N и заканчивающееся в указанной позиции или после нее, является последним обработанным событием. Эта опция применяется к последнему файлу журнала, указанному в командной строке.

    Эта опция полезна для восстановления в определенный момент времени. См. Раздел 9.5, «Восстановление в определенный момент времени (инкрементное)».

  • --tls-ciphersuites=ciphersuite_list

    Формат командной строки --tls-ciphersuites=ciphersuite_list
    Тип String

    Допустимые наборы шифров для зашифрованных соединений, использующих TLSv1.3. Значение представляет собой список из одного или нескольких имен наборов шифров, разделенных двоеточием. Наборы шифров, которые можно указать для этой опции, зависят от библиотеки SSL, используемой для компиляции MySQL. Подробнее см. Раздел 8.3.2, «Зашифрованные протоколы соединений TLS и шифры».

  • --tls-sni-servername=server_name

    Формат командной строки --tls-sni-servername=server_name
    Тип String

    При указании имя передается в библиотеку API libmysqlclient C с помощью опции MYSQL_OPT_TLS_SNI_SERVERNAME . Имя сервера не чувствительно к регистру. Чтобы узнать, какое имя сервера указал клиент для текущего сеанса (если таковое имеется), проверьте переменную состояния Tls_sni_server_name.

    Указание имени сервера (SNI) является расширением протокола TLS (OpenSSL должен быть скомпилирован с использованием расширений TLS, чтобы эта опция работала). Реализация SNI в MySQL представлена только на стороне клиента.

  • --tls-version=protocol_list

    Формат командной строки --tls-version=protocol_list
    Тип String
    Значение по умолчанию

    TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 (OpenSSL 1.1.1 или выше)

    TLSv1,TLSv1.1,TLSv1.2 (в противном случае)

    Допустимые протоколы TLS для зашифрованных соединений. Значение представляет собой список из одного или нескольких имен протоколов, разделенных запятыми. Протоколы, которые можно указать для этой опции, зависят от библиотеки SSL, используемой для компиляции MySQL. Подробнее см. Раздел 8.3.2, «Зашифрованные протоколы соединений TLS и шифры».

  • --to-last-log, -t

    Формат командной строки --to-last-log

    Не останавливайтесь в конце запрошенного бинарного журнала от сервера MySQL, а продолжайте печать до конца последнего бинарного журнала. Если вы отправляете вывод на тот же сервер MySQL, это может привести к бесконечному циклу. Для этой опции требуется --read-from-remote-server.

  • --user=user_name, -u user_name

    Формат командной строки --user=user_name,
    Тип String

    Имя пользователя учетной записи MySQL, используемое при подключении к удаленному серверу.

    Если вы используете плагин Rewriter, вы должны предоставить этому пользователю привилегию SKIP_QUERY_REWRITE.

  • --verbose, -v

    Формат командной строки --verbose

    Восстановите события строк и отобразите их в виде закомментированных операторов SQL, с информацией о разделах таблиц, если применимо. Если эта опция указана дважды (путем передачи либо "-vv", либо "--verbose --verbose"), вывод включает комментарии для указания типов данных столбцов и некоторых метаданных, а также информационные события журнала, такие как события журнала запросов строк, если системная переменная binlog_rows_query_log_events установлена в TRUE.

    Примеры, показывающие влияние --base64-output и --verbose на вывод событий строк, см. Раздел 6.6.9.2, «Отображение событий строк mysqlbinlog».

  • --verify-binlog-checksum, -c

    Формат командной строки --verify-binlog-checksum

    Проверить контрольные суммы в файлах бинарного журнала.

  • --version, -V

    Формат командной строки --version

    Отобразить информацию о версии и завершить работу.

  • --zstd-compression-level=level

    Формат командной строки --zstd-compression-level=#
    Тип Целое число

    Уровень сжатия для подключений к серверу, использующих алгоритм сжатия zstd. Разрешённые значения — от 1 до 22, причём большие значения означают более высокий уровень сжатия. По умолчанию используется уровень сжатия zstd 3. Настройка уровня сжатия не влияет на подключения, не использующие сжатие zstd.

    Дополнительную информацию см. в разделе 6.2.8 «Управление сжатием подключений».

Можно передать вывод mysqlbinlog в клиент mysql для выполнения событий, содержащихся в бинарном логе. Этот метод используется для восстановления после непредвиденного завершения работы, когда у вас есть старая резервная копия (см. раздел 9.5 «Восстановление в определённый момент времени (инкрементное восстановление)»). Например:

mysqlbinlog binlog.000001 | mysql -u root -p

Или:

mysqlbinlog binlog.[0-9]* | mysql -u root -p

Если инструкции, сгенерированные mysqlbinlog, могут содержать значения BLOB, это может вызвать проблемы при обработке их mysql. В этом случае вызовите mysql с параметром --binary-mode.

Вы также можете перенаправить вывод mysqlbinlog в текстовый файл, если необходимо предварительно изменить журнал инструкций (например, удалить инструкции, которые по какой-либо причине не следует выполнять). После редактирования файла выполните содержащиеся в нём инструкции, используя его в качестве входных данных для программы mysql:

mysqlbinlog binlog.000001 > tmpfile
... edit tmpfile ...
mysql -u root -p < tmpfile

При вызове mysqlbinlog с параметром --start-position отображаются только те события, у которых смещение в бинарном логе больше или равно заданному значению (заданное значение должно соответствовать началу события). Также есть параметры для остановки и запуска при обнаружении события с заданной датой и временем. Это позволяет выполнить восстановление в определённый момент времени, используя параметр --stop-datetime (например, можно сказать: “перезапустить мои базы данных до состояния на сегодня в 10:30 утра”).

Обработка нескольких файлов. Если у вас несколько бинарных логов для обработки на сервере MySQL, безопасный метод — обработать их все с использованием одного подключения к серверу. Ниже приведён пример того, что может быть небезопасным:

mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!!
mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!!

Обработка бинарных логов таким образом с использованием нескольких подключений к серверу приводит к проблемам, если первый файл лога содержит инструкцию CREATE TEMPORARY TABLE, а второй — инструкцию, использующую временную таблицу. При завершении работы первого процесса mysql сервер удаляет временную таблицу. Когда второй процесс mysql пытается использовать таблицу, сервер возвращает сообщение “неизвестная таблица”.

Чтобы избежать подобных проблем, используйте один процесс mysql для выполнения содержимого всех бинарных логов, которые вы хотите обработать. Вот один из способов:

mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p

Ещё один подход — записать все логи в один файл, а затем обработать этот файл:

mysqlbinlog binlog.000001 >  /tmp/statements.sql
mysqlbinlog binlog.000002 >> /tmp/statements.sql
mysql -u root -p -e "source /tmp/statements.sql"

Также можно передать несколько файлов бинарных логов в mysqlbinlog в качестве потокового ввода с помощью конвейера оболочки. Архив сжатых файлов бинарных логов может быть распакован и передан непосредственно в mysqlbinlog. В данном примере, binlog-files_1.gz содержит несколько файлов бинарных логов для обработки. Конвейер извлекает содержимое binlog-files_1.gz, передает файлы бинарных логов в mysqlbinlog как стандартный ввод и передает вывод mysqlbinlog в клиент mysql для выполнения:

gzip -cd binlog-files_1.gz | ./mysqlbinlog - | ./mysql -uroot  -p

Можно указать более одного архива, например:

gzip -cd binlog-files_1.gz binlog-files_2.gz | ./mysqlbinlog - | ./mysql -uroot  -p

Для потокового ввода не используйте --stop-position, так как mysqlbinlog не может определить последний файл лога для применения этого параметра.

Операции LOAD DATA. mysqlbinlog может генерировать вывод, воспроизводящий операцию LOAD DATA без исходного файла данных. mysqlbinlog копирует данные во временный файл и записывает инструкцию LOAD DATA LOCAL, которая ссылается на этот файл. По умолчанию расположение каталога, куда записываются эти файлы, зависит от операционной системы. Чтобы явно указать каталог, используйте параметр --local-load.

Поскольку mysqlbinlog преобразует инструкции LOAD DATA в инструкции LOAD DATA LOCAL (то есть, добавляет LOCAL), и клиент, и сервер, которые вы используете для обработки инструкций, должны быть настроены с включённой возможностью LOCAL. См. раздел 8.1.6 «Учёт безопасности для LOAD DATA LOCAL».

Предупреждение

Временные файлы, созданные для инструкций LOAD DATA LOCAL, не удаляются автоматически, поскольку они необходимы до фактического выполнения этих инструкций. Вам следует самим удалить временные файлы после того, как вам больше не нужен журнал инструкций. Файлы находятся в каталоге временных файлов и имеют имена, подобные original_file_name-#-#.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/mysqlbinlog.html

Spec-Zone.ru

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