Spec-Zone.ru › MySQL 5.7

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

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

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

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

mysqlbinlog [options] log_file ...

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

mysqlbinlog binlog.000003

Вывод включает события, содержащиеся в binlog.000003. Для журналирования на основе операторов информация о событии включает SQL-оператор, идентификатор сервера, на котором он был выполнен, метку времени выполнения оператора, затраченное время и т. д. Для журналирования на основе строк событие указывает изменение строки, а не SQL-оператор. Подробности о режимах журналирования см. в разделе 16.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) для повторного выполнения операторов в журнале. Это полезно для операций восстановления после неожиданного завершения работы сервера. Другие примеры использования см. в дальнейшей части этого раздела и в разделе 7.5 «Восстановление в определённый момент времени (инкрементное)».

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

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

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

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

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

Таблица 4.23 Параметры mysqlbinlog
Название параметра Описание Введено Устарело
END_OF_DOCUMENT_MARKER
--base64-output Выводить записи двоичного журнала, используя кодировку base-64
--bind-address Использовать указанный сетевой интерфейс для подключения к MySQL Server
--binlog-row-event-max-size Максимальный размер события двоичного журнала
--character-sets-dir Директория, в которой установлены наборы символов
--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 у сервера 5.7.23
--help Вывести сообщение справки и выйти
--hexdump Отобразить шестнадцатеричный дамп журнала в комментариях
--host Хост, на котором расположен MySQL-сервер
--idempotent Заставить сервер использовать режим idempotent при обработке обновлений двоичного журнала из этого сеанса только
--include-gtids Отобразить только группы в предоставленном наборе GTID
--local-load Подготовить локальные временные файлы для LOAD DATA в указанной директории
--login-path Читать параметры пути входа из .mylogin.cnf
--no-defaults Не читать файлы параметров
--offset Пропустить первые N записей в журнале
--open-files-limit Указать количество открытых дескрипторов файлов для резервирования
--password Пароль для подключения к серверу
--plugin-dir Директория, в которой установлены плагины
--port Номер TCP/IP порта для подключения
--print-defaults Вывести параметры по умолчанию
--protocol Протокол передачи для использования
--raw Записывать события в сыром (двоичном) формате в выходные файлы
--read-from-remote-master Читать двоичный журнал с сервера MySQL-источника репликации, а не из локального файла журнала
--read-from-remote-server Читать двоичный журнал с MySQL-сервера, а не из локального файла журнала
--result-file Направить вывод в указанный файл
--rewrite-db Создать правила переписывания для баз данных при воспроизведении из журналов, записанных в строчном формате. Может использоваться несколько раз
--secure-auth Не отправлять пароли на сервер в старом (до 4.1) формате Да
--server-id Извлечь только те события, которые созданы сервером с заданным идентификатором сервера
--server-id-bits Указать mysqlbinlog, как интерпретировать идентификаторы серверов в двоичном журнале, когда журнал был записан mysqld, имеющим server-id-bits, установленные меньше максимального значения; поддерживается только версией MySQL Cluster mysqlbinlog
--server-public-key-path Путь к файлу, содержащему открытый ключ RSA 5.7.23
--set-charset Добавить оператор SET NAMES charset_name в вывод
--shared-memory-base-name Имя общей памяти для подключений общей памяти (только Windows)
--short-form Отобразить только операторы, содержащиеся в журнале
--skip-gtids Не включать GTID из файлов двоичного журнала в файл вывода дампов
--socket Файл сокета Unix или именованная труба Windows для использования
--ssl Включить шифрование подключения
--ssl-ca Файл, содержащий список доверенных центров сертификации SSL
--ssl-capath Директория, содержащая файлы сертификатов доверенных центров сертификации SSL
--ssl-cert Файл, содержащий сертификат X.509
--ssl-cipher Допустимые шифры для шифрования подключения
--ssl-crl Файл, содержащий списки отзыва сертификатов
--ssl-crlpath Директория, содержащая файлы списков отзыва сертификатов
--ssl-key Файл, содержащий ключ X.509
--ssl-mode Желаемое состояние безопасности подключения к серверу 5.7.11
--ssl-verify-server-cert Проверить имя хоста по имени общего имени сертификата сервера
--start-datetime Читать двоичный журнал с первого события со временем, равным или более поздним, чем аргумент datetime
--start-position Декодировать двоичный журнал с первого события с позицией, равной или большей, чем аргумент
--stop-datetime Остановить чтение двоичного журнала на первом событии со временем метки, равным или большим, чем аргумент datetime
--stop-never Оставаться подключенным к серверу после чтения последнего файла двоичного журнала
--stop-never-slave-server-id Идентификатор сервера-ведомого для отчёта при подключении к серверу
--stop-position Остановить декодирование двоичного журнала на первом событии с позицией, равной или большей, чем аргумент
--tls-version Разрешённые протоколы TLS для зашифрованных подключений 5.7.10
--to-last-log Не останавливаться в конце запрошенного двоичного журнала с сервера MySQL, а продолжать печать до конца последнего двоичного журнала
--user Имя пользователя MySQL для подключения к серверу
--verbose Восстановить события строк как SQL-заявления
--verify-binlog-checksum Проверить контрольные суммы в двоичном журнале
--version Отобразить информацию о версии и выйти

  • --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 на выводе событий строк, см. в разделе 4.6.7.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
    Тип Имя каталога

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

  • --connection-server-id=server_id

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

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

    Эффективные значения по умолчанию и минимальные значения для этого параметра зависят от того, выполняется ли mysqlbinlog в режиме блокировки или в режиме без блокировки. При выполнении mysqlbinlog в режиме блокировки значение по умолчанию (и минимальное) равно 1; при выполнении в режиме без блокировки значение по умолчанию (и минимальное) равно 0.

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
    Тип Строка

    Подсказка о том, какой плагин проверки подлинности клиента использовать. См. Раздел 6.2.13, «Подключаемая аутентификация».

  • --defaults-extra-file=file_name

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

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

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

  • --defaults-file=file_name

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

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

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

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

  • --defaults-group-suffix=str

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

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

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

  • --disable-log-bin, -D

    Формат командной строки --disable-log-bin

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

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

  • --exclude-gtids=gtid_set

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

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

  • --force-if-open, -F

    Формат командной строки --force-if-open

    Читать файлы бинарного журнала, даже если они открыты или не были закрыты должным образом.

  • --force-read, -f

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

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

  • --get-server-public-key

    Формат командной строки --get-server-public-key
    Добавлена 5.7.23
    Тип Булево

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

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

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

    Параметр --get-server-public-key был добавлен в MySQL 5.7.23.

  • --hexdump, -H

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

    Отобразить шестнадцатеричный дамп журнала в комментариях, как описано в разделе 4.6.7.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 должен подготавливать локальные временные файлы.

    Важно

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

  • --login-path=name

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

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

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

  • --no-defaults

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

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

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

    Для получения дополнительной информации об этом и других параметрах файла параметров см. Раздел 4.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 и последующим паролем. Если параметр пароля не указан, по умолчанию пароль не отправляется.

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

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

  • --plugin-dir=dir_name

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

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

  • --port=port_num, -P port_num

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

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

  • --print-defaults

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

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

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

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

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

    TCP

    SOCKET

    PIPE

    MEMORY

    Транспортный протокол, используемый для подключения к серверу. Он полезен, когда другие параметры подключения обычно приводят к использованию протокола, отличного от того, который вам нужен. Подробные сведения о допустимых значениях см. в Разделе 4.2.5, «Транспортные протоколы подключения».

  • --raw

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

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

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

    Формат командной строки --read-from-remote-master=type

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

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

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

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

    Формат командной строки --read-from-remote-server=file_name

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

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

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

    Эта опция аналогична --read-from-remote-master=BINLOG-DUMP-NON-GTIDS.

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

    Формат командной строки --result-file=name

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

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

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

    При чтении из журнала на основе строк или операторов, перепишите все вхождения from_name на to_name. Переписывание выполняется для строк, в журналах на основе строк, а также для предложений USE в журналах на основе операторов. В версиях MySQL до 5.7.8 эта опция использовалась только при восстановлении таблиц, записанных в формате на основе строк.

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

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

    Правило переписывания, используемое в качестве значения для этой опции, представляет собой строку вида '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.

  • --secure-auth

    Формат командной строки --secure-auth
    Устаревший Да

    Не отправляйте пароли на сервер в старом формате (до 4.1). Это предотвращает подключения, за исключением серверов, использующих новый формат паролей.

    Начиная с MySQL 5.7.5, этот параметр устарел; ожидается его удаление в будущих выпусках MySQL. Он всегда включен, и попытка отключить его (--skip-secure-auth, --secure-auth=0) приводит к ошибке. До MySQL 5.7.5 этот параметр включён по умолчанию, но может быть отключён.

    Примечание

    Пароли, использующие метод хеширования до 4.1, менее безопасны, чем пароли, использующие собственный метод хеширования паролей, и следует избегать их использования. Пароли до 4.1 устарели, и поддержка их была удалена в MySQL 5.7.5. Инструкции по обновлению учётных записей см. в Разделе 6.4.1.3, «Переход от хеширования паролей до версии 4.1 и плагина mysql_old_password».

  • --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
    Введён 5.7.23
    Тип Имя файла

    Имя пути к файлу в формате 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 см. в Разделе 6.4.1.5, «Плагиновая аутентификация SHA-256» и Разделе 6.4.1.4, «Кеширование плагиновой аутентификации SHA-2».

    Параметр --server-public-key-path был добавлен в MySQL 5.7.23.

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

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

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

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

  • --socket=path, -S path

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

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

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

  • --ssl*

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

  • --start-datetime=datetime

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

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

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

    Этот параметр полезен для восстановления по состоянию на определённую точку времени. См. Раздел 7.5, «Восстановление по состоянию на определённую точку времени (инкрементное)».

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

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

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

    Этот параметр полезен для восстановления по состоянию на определённую точку времени. См. Раздел 7.5, «Восстановление по состоянию на определённую точку времени (инкрементное)».

  • --stop-datetime=datetime

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

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

    Этот параметр полезен для восстановления по состоянию на определённую точку времени. См. Раздел 7.5, «Восстановление по состоянию на определённую точку времени (инкрементное)».

  • --stop-never

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

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

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

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

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

    При использовании --stop-never, mysqlbinlog сообщает об идентификаторе сервера 65535 при подключении к серверу. --stop-never-slave-server-id явно указывает идентификатор сервера для отчёта. Его можно использовать для предотвращения конфликта с идентификатором сервера реплики или другого процесса mysqlbinlog. См. Раздел 4.6.7.4, «Указание идентификатора сервера mysqlbinlog».

  • --stop-position=N

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

    Остановиться на первом событии в двоичном логе с позицией, равной или большей N. Этот параметр применяется к последнему файлу лога, указанному в командной строке.

    Этот параметр полезен для восстановления по состоянию на определённую точку времени. См. Раздел 7.5, «Восстановление по состоянию на определённую точку времени (инкрементное)».

  • --version, -V

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

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

    В MySQL 5.7, номер версии, отображаемый mysqlbinlog при использовании этого параметра, составляет 3.4.

Вы можете передать вывод mysqlbinlog в клиент mysql для выполнения событий, содержащихся в двоичном журнале. Этот метод используется для восстановления после неожиданного завершения работы, когда у вас есть старая резервная копия (см. Раздел 7.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 может генерировать вывод, воспроизводящий операцию LOAD DATA без исходного файла данных. mysqlbinlog копирует данные во временный файл и записывает оператор LOAD DATA LOCAL, который ссылается на этот файл. По умолчанию местоположение каталога, куда записываются эти файлы, зависит от системы. Чтобы явно указать каталог, используйте параметр --local-load.

Поскольку mysqlbinlog преобразует операторы LOAD DATA в операторы LOAD DATA LOCAL (то есть добавляет LOCAL), как клиент, так и сервер, используемые для обработки операторов, должны быть настроены с включенной возможностью LOCAL. См. Раздел 6.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-5.7-en/mysqlbinlog.html

Spec-Zone.ru

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