4.6.7 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
| Название параметра | Описание | Введено | Устарело |
|---|
| --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Тип Строка Значение по умолчанию AUTOДопустимые значения AUTONEVERDECODE-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На компьютере с несколькими сетевыми интерфейсами используйте этот параметр, чтобы выбрать интерфейс для подключения к серверу MySQL.
-
Формат командной строки --binlog-row-event-max-size=#Тип Числовой Значение по умолчанию 4294967040Минимальное значение 256Максимальное значение 18446744073709547520Укажите максимальный размер события двоичного журнала, основанного на строках, в байтах. Строки группируются в события, меньшие этого размера, если это возможно. Значение должно быть кратным 256. По умолчанию 4 ГБ.
-
Формат командной строки --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.
-
--database=,db_name-ddb_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_named:t:o,/tmp/mysqlbinlog.trace.Этот параметр доступен только в том случае, если MySQL был скомпилирован с использованием
WITH_DEBUG. Выпускные двоичные файлы MySQL, предоставляемые Oracle, не скомпилированы с использованием этого параметра. -
Формат командной строки --debug-checkТип Булево Значение по умолчанию FALSEВывод некоторой отладочной информации при завершении программы.
Этот параметр доступен только в том случае, если MySQL был скомпилирован с использованием
WITH_DEBUG. Выпускные двоичные файлы MySQL, предоставляемые Oracle, не скомпилированы с использованием этого параметра. -
Формат командной строки --debug-infoТип Булево Значение по умолчанию FALSEВывод отладочной информации, а также статистики использования памяти и ЦП при завершении программы.
Этот параметр доступен только в том случае, если MySQL был скомпилирован с использованием
WITH_DEBUG. Выпускные двоичные файлы MySQL, предоставляемые Oracle, не скомпилированы с использованием этого параметра. -
Формат командной строки --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Тип Имя файла Используйте только указанный файл параметров. Если файл не существует или недоступен, произойдет ошибка. Если
file_nameне является абсолютным путем, он интерпретируется относительно текущей директории.Исключение: даже с
--defaults-file, клиентские программы читают.mylogin.cnf.Дополнительную информацию об этом и других параметрах файла см. в разделе 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».
-
Формат командной строки --defaults-group-suffix=strТип Строка Читать не только обычные группы параметров, но и группы с обычными именами и суффиксом
str. Например, mysqlbinlog обычно читает группы[client]и[mysqlbinlog]. Если этот параметр задан как--defaults-group-suffix=_other, mysqlbinlog также читает группы[client_other]и[mysqlbinlog_other].Дополнительную информацию об этом и других параметрах файла см. в разделе 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».
-
Формат командной строки --disable-log-binОтключить бинарное ведение журнала. Это полезно для предотвращения бесконечной петли, если вы используете параметр
--to-last-logи отправляете вывод на тот же сервер MySQL. Этот параметр также полезен при восстановлении после неожиданного выхода, чтобы избежать дублирования записанных вами инструкций.Этот параметр заставляет mysqlbinlog включить инструкцию
SET sql_log_bin = 0в свой вывод для отключения бинарного ведения журнала оставшегося вывода. Управление значением сессии системной переменнойsql_log_bin— это ограниченная операция, поэтому этот параметр требует, чтобы у вас были достаточные привилегии для установки ограниченных переменных сессии. См. раздел 5.1.8.1, «Привилегии системных переменных». -
Формат командной строки --exclude-gtids=gtid_setТип Строка Значение по умолчанию Не отображать ни одну из групп, перечисленных в
gtid_set. -
--force-if-open,-FФормат командной строки --force-if-openЧитать файлы бинарного журнала, даже если они открыты или не были закрыты должным образом.
-
--force-read,-fФормат командной строки --force-readС этим параметром, если mysqlbinlog считывает событие бинарного журнала, которое не распознает, он выводит предупреждение, игнорирует событие и продолжает работу. Без этого параметра mysqlbinlog останавливается, если считывает такое событие.
-
Формат командной строки --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-hhost_nameФормат командной строки --host=host_nameТип Строка Значение по умолчанию localhostПолучить бинарный журнал с сервера MySQL на указанном хосте.
-
Формат командной строки --idempotentТип Булево Значение по умолчанию trueУказать MySQL-серверу использовать режим идемпотентности при обработке обновлений; это приводит к подавлению любых ошибок дублирования ключа или отсутствия ключа, которые сервер обнаруживает в текущей сессии во время обработки обновлений. Этот параметр может быть полезен всякий раз, когда необходимо или требуется повторное воспроизведение одного или нескольких бинарных журналов на MySQL-сервере, который может не содержать все данные, на которые ссылаются журналы.
Сфера действия этого параметра ограничена текущим клиентом mysqlbinlog и только текущей сессией.
-
Формат командной строки --include-gtids=gtid_setТип Строка Значение по умолчанию Отображать только группы, перечисленные в
gtid_set.
-
--local-load=,dir_name-ldir_nameФормат командной строки --local-load=dir_nameТип Имя каталога Для операций загрузки данных, соответствующих операторам
LOAD DATA, mysqlbinlog извлекает файлы из событий бинарного журнала, записывает их как временные файлы в локальную файловую систему и записывает операторыLOAD DATA LOCALдля загрузки файлов. По умолчанию mysqlbinlog записывает эти временные файлы в каталог, зависящий от операционной системы. Параметр--local-loadможно использовать для явного указания каталога, в котором mysqlbinlog должен подготавливать локальные временные файлы.ВажноЭти временные файлы не удаляются автоматически с помощью mysqlbinlog или любой другой программы MySQL.
-
Формат командной строки --login-path=nameТип Строка Читает параметры из указанного пути входа в файл пути входа
.mylogin.cnf. “Путь входа” — это группа параметров, содержащая параметры, указывающие, к какому серверу MySQL необходимо подключиться и под какой учетной записью аутентифицироваться. Для создания или изменения файла пути входа используйте утилиту mysql_config_editor. См. Раздел 4.6.6, «mysql_config_editor — Утилита конфигурации MySQL».Для получения дополнительной информации об этом и других параметрах файла параметров см. Раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».
-
Формат командной строки --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-oNФормат командной строки --offset=#Тип Числовое Пропускает первые
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Тип Имя каталога Каталог, в котором следует искать подключаемые модули. Укажите этот параметр, если параметр
--default-authиспользуется для указания подключаемого модуля аутентификации, но mysqlbinlog не находит его. См. Раздел 6.2.13, «Подключаемая аутентификация». -
--port=,port_num-Pport_numФормат командной строки --port=port_numТип Числовое Значение по умолчанию 3306Номер порта TCP/IP, используемый для подключения к удаленному серверу.
-
Формат командной строки --print-defaultsВыводит имя программы и все параметры, которые она получает из файлов параметров.
Для получения дополнительной информации об этом и других параметрах файла параметров см. Раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».
-
--protocol={TCP|SOCKET|PIPE|MEMORY}Формат командной строки --protocol=typeТип Строка Значение по умолчанию [see text]Допустимые значения TCPSOCKETPIPEMEMORYТранспортный протокол, используемый для подключения к серверу. Он полезен, когда другие параметры подключения обычно приводят к использованию протокола, отличного от того, который вам нужен. Подробные сведения о допустимых значениях см. в Разделе 4.2.5, «Транспортные протоколы подключения».
-
Формат командной строки --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-rnameФормат командной строки --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Устаревший Да Не отправляйте пароли на сервер в старом формате (до 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-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 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]Тип Логический Значение по умолчанию 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-SpathФормат командной строки --socket={file_name|pipe_name}Тип Строка Для подключений к
localhost, используемый файл Unix-сокет или, в Windows, имя именованной пайплайной трубы.В Windows этот параметр применяется только в том случае, если сервер был запущен с включённой системной переменной
named_pipeдля поддержки подключений с использованием именованных пайплайнов. Кроме того, пользователь, производящий подключение, должен быть членом группы Windows, указанной в системной переменнойnamed_pipe_full_access_group. -
--ssl*Параметры, начинающиеся с
--ssl, определяют, подключаться ли к серверу с использованием шифрования, и указывают, где найти ключи и сертификаты SSL. См. Параметры командной строки для защищённых подключений.
-
Формат командной строки --start-datetime=datetimeТип Дата и время Начать чтение двоичного лога с первого события, имеющего отметку времени, равную или позднее аргументу
datetime. Значениеdatetimeотносительное к часовому поясу машины, на которой вы запускаете mysqlbinlog. Значение должно соответствовать формату, принятому для типов данныхDATETIMEилиTIMESTAMP. Например:mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003
Этот параметр полезен для восстановления по состоянию на определённую точку времени. См. Раздел 7.5, «Восстановление по состоянию на определённую точку времени (инкрементное)».
-
--start-position=,N-jNФормат командной строки --start-position=#Тип Числовой Начать чтение двоичного лога с первого события, имеющего позицию, равную или большую
N. Этот параметр применяется к первому файлу лога, указанному в командной строке.Этот параметр полезен для восстановления по состоянию на определённую точку времени. См. Раздел 7.5, «Восстановление по состоянию на определённую точку времени (инкрементное)».
-
Формат командной строки --stop-datetime=datetimeОстановиться на первом событии в двоичном логе с отметкой времени, равной или позднее аргумента
datetime. См. описание параметра--start-datetimeдля информации о значенииdatetime.Этот параметр полезен для восстановления по состоянию на определённую точку времени. См. Раздел 7.5, «Восстановление по состоянию на определённую точку времени (инкрементное)».
-
Формат командной строки --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. Этот параметр применяется к последнему файлу лога, указанному в командной строке.Этот параметр полезен для восстановления по состоянию на определённую точку времени. См. Раздел 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.