Spec-Zone.ru › MySQL 8.4

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 Server
--binlog-row-event-max-size Максимальный размер события бинарного журнала
--character-sets-dir Директория, в которой установлены наборы символов
--compress Сжимать всю информацию, передаваемую между клиентом и сервером
--compression-algorithms Разрешенные алгоритмы сжатия для подключений к серверу
--connection-server-id Используется для тестирования и отладки. См. текст для применимых значений по умолчанию и других особенностей
--database Выводить записи только для этой базы данных
--debug Записывать отладочный журнал
--debug-check Выводить отладочную информацию при выходе программы
--debug-info Выводить отладочную информацию, статистику памяти и ЦП при выходе программы
--default-auth Подключаемый модуль проверки подлинности для использования
--defaults-extra-file Читать файл с дополнительными параметрами помимо обычных файлов параметров
--defaults-file Читать только указанный файл параметров
--defaults-group-suffix Значение суффикса группы параметров
--disable-log-bin Отключить двоичный журнал
--exclude-gtids Не отображать ни одну из групп в предоставленном наборе GTID
--force-if-open Читать файлы бинарного журнала, даже если они открыты или не закрыты должным образом
--force-read Если mysqlbinlog считывает событие бинарного журнала, которое не распознает, он выводит предупреждение
--get-server-public-key Запросить открытый ключ RSA у сервера
--help Отобразить сообщение справки и выйти
--hexdump Отобразить шестнадцатеричный дамп журнала в комментариях
--host Хост, на котором расположен сервер MySQL
--idempotent Заставить сервер использовать режим идемпотентности при обработке обновлений бинарного журнала из этого сеанса
--include-gtids Отображать только группы в предоставленном наборе GTID
--local-load Подготовить локальные временные файлы для LOAD DATA в указанной директории
--login-path Читать параметры пути входа из .mylogin.cnf
--no-defaults Не читать файлы параметров
--no-login-paths Не читать пути входа из файла пути входа
--offset Пропустить первые N записей в журнале
--password Пароль для подключения к серверу
--plugin-dir Директория, в которой установлены плагины
--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 Отображать только операторы, содержащиеся в журнале
--skip-gtids Не включать GTID из файлов бинарного журнала в выходной файл дампов
--socket Файл Unix-сокет или именованная труба Windows для использования
--ssl-ca Файл, содержащий список доверенных SSL-властей сертификации
--ssl-capath Директория, содержащая файлы сертификатов доверенных SSL-властей сертификации
--ssl-cert Файл, содержащий X.509-сертификат
--ssl-cipher Разрешенные шифры для шифрования соединения
--ssl-crl Файл, содержащий списки отзыва сертификатов
--ssl-crlpath Директория, содержащая файлы списков отзыва сертификатов
--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 Row Event Display».

  • --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».

  • --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.2, «Плагин аутентификации 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 записывает эти временные файлы в каталог, зависящий от операционной системы. Для явного указания каталога, в котором mysqlbinlog должен подготавливать локальные временные файлы, можно использовать параметр --local-load.

    Поскольку другие процессы могут записывать файлы в каталог по умолчанию, зависящий от системы, рекомендуется указать параметр --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.3, «Плагин аутентификации SHA-256» и Разделе 8.4.1.2, «Плагин аутентификации кэширования 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

    При указании имя передается в библиотеку libmysqlclient C API с использованием опции 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-8.4-en/mysqlbinlog.html

Spec-Zone.ru

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