6.6.9 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
| Имя параметра | Описание |
|---|
| --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Тип Строка Значение по умолчанию 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на вывод событий строк, см. в Разделе 6.6.9.2, «mysqlbinlog Row Event Display». -
-
Формат командной строки --bind-address=ip_addressНа компьютере с несколькими сетевыми интерфейсами этот параметр используется для выбора интерфейса для подключения к серверу MySQL.
-
Формат командной строки --binlog-row-event-max-size=#Тип Числовой Значение по умолчанию 4294967040Минимальное значение 256Максимальное значение 18446744073709547520Укажите максимальный размер события двоичного журнала на основе строк в байтах. Если возможно, строки группируются в события размером меньше этого значения. Значение должно быть кратно 256. Значение по умолчанию — 4 ГБ.
-
Формат командной строки --character-sets-dir=dir_nameТип Имя каталога Каталог, в котором установлены наборы символов. См. Раздел 12.15, «Настройка наборов символов».
-
Формат командной строки --compress[={OFF|ON}]Устарел Да Тип Булево Значение по умолчанию OFFСжимать всю информацию, передаваемую между клиентом и сервером, если возможно. См. Раздел 6.2.8, «Управление сжатием соединения».
Этот параметр устарел. Ожидается его удаление в будущей версии MySQL. См. Настройка устаревшего сжатия соединения.
-
--compression-algorithms=valueФормат командной строки --compression-algorithms=valueТип Набор Значение по умолчанию uncompressedДопустимые значения zlibzstduncompressedДопустимые алгоритмы сжатия для подключений к серверу. Доступные алгоритмы такие же, как и для системной переменной
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-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Тип Строка Подсказка о том, какой плагин аутентификации клиента использовать. См. Раздел 8.2.17, «Подключаемые модули аутентификации».
-
--defaults-extra-file=file_nameФормат командной строки --defaults-extra-file=file_nameТип Имя файла Читает этот файл параметров после глобального файла параметров, но (в Unix) перед файлом параметров пользователя. Если файл не существует или недоступен, возникает ошибка. Если
file_nameне является абсолютным именем пути, оно интерпретируется относительно текущего каталога.Дополнительную информацию об этом и других параметрах файлов см. в Разделе 6.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».
-
Формат командной строки --defaults-file=file_nameТип Имя файла Используется только указанный файл параметров. Если файл не существует или недоступен, возникает ошибка. Если
file_nameне является абсолютным именем пути, оно интерпретируется относительно текущей директории.Исключение: даже с
--defaults-file, клиентские программы читают.mylogin.cnf.Дополнительную информацию об этом и других параметрах файла см. в разделе 6.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».
-
Формат командной строки --defaults-group-suffix=strТип Строка Читать не только обычные группы параметров, но также группы с обычными именами и суффиксом
str. Например, mysqlbinlog обычно читает группы[client]и[mysqlbinlog]. Если этот параметр задан как--defaults-group-suffix=_other, mysqlbinlog также читает группы[client_other]и[mysqlbinlog_other].Дополнительную информацию об этом и других параметрах файла см. в разделе 6.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».
-
Формат командной строки --disable-log-binОтключить двоичное протоколирование. Это полезно для предотвращения бесконечной петли, если вы используете параметр
--to-last-logи отправляете вывод на тот же сервер MySQL. Этот параметр также полезен при восстановлении после неожиданного завершения работы, чтобы избежать дублирования записанных вами заявлений.Этот параметр заставляет mysqlbinlog включать в свой вывод инструкцию
SET sql_log_bin = 0для отключения двоичного протоколирования оставшегося вывода. Манипулирование значением сессии системной переменнойsql_log_bin— ограниченная операция, поэтому для этого параметра необходимы права, достаточные для задания ограниченных переменных сессии. См. раздел 7.1.9.1, «Права доступа к системным переменным». -
Формат командной строки --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Тип Булево Запросить у сервера открытый ключ, необходимый для обмена паролями на основе пары ключей 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-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 записывает эти временные файлы в каталог, зависящий от операционной системы. Для явного указания каталога, в котором 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Тип Строка Читает параметры из указанного пути к файлу входа в систему
.mylogin.cnf. “Путь к файлу входа” — это группа параметров, содержащая параметры, указывающие, к какому серверу MySQL подключаться и какая учетная запись используется для аутентификации. Для создания или изменения файла пути входа в систему используйте утилиту mysql_config_editor. См. Раздел 6.6.7, «mysql_config_editor — Утилита конфигурации MySQL».Для получения дополнительной информации об этом и других параметрах файла параметров см. Раздел 6.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».
-
Формат командной строки --no-login-pathsПропускает чтение параметров из файла пути к файлу входа в систему.
См.
--login-pathдля получения дополнительной информации.Для получения дополнительной информации об этом и других параметрах файла параметров см. Раздел 6.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».
-
Формат командной строки --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-oNФормат командной строки --offset=#Тип Числовой Пропускает первые
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Тип Имя каталога Каталог, в котором следует искать подключаемые модули. Укажите этот параметр, если параметр
--default-authиспользуется для указания подключаемого модуля аутентификации, но mysqlbinlog не находит его. См. Раздел 8.2.17, «Подключаемая аутентификация». -
--port=,port_num-Pport_numФормат командной строки --port=port_numТип Числовой Значение по умолчанию 3306Номер порта TCP/IP, используемый для подключения к удаленному серверу.
-
Командная строка --print-defaultsВыводит имя программы и все опции, полученные из файлов параметров.
Дополнительную информацию об этом и других параметрах файла см. в разделе 6.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».
-
Командная строка --print-table-metadataВыводит метаданные, относящиеся к таблицам, из двоичного журнала. Настройте количество метаданных, относящихся к таблицам, залогированных в двоичном журнале, с помощью
binlog-row-metadata. -
--protocol={TCP|SOCKET|PIPE|MEMORY}Командная строка --protocol=typeТип Строка Значение по умолчанию [see text]Допустимые значения TCPSOCKETPIPEMEMORYПротокол передачи для подключения к серверу. Это полезно, когда другие параметры подключения приводят к использованию протокола, отличного от желаемого. Подробную информацию о допустимых значениях см. в разделе 6.2.7, «Протоколы передачи соединения».
-
Командная строка --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-rnameКомандная строка --result-file=nameБез параметра
--rawэтот параметр указывает файл, в который mysqlbinlog записывает текстовый вывод. С параметром--rawmysqlbinlog записывает один двоичный выходной файл для каждого файла журнала, переданного с сервера, записывая их по умолчанию в текущей директории с теми же именами, что и исходный файл журнала. В этом случае значение параметра--result-fileобрабатывается как префикс, изменяющий имена выходных файлов.
-
Формат командной строки --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-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 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Не включайте GTIDs из файлов бинарного журнала в файл вывода дампа. Например:
mysqlbinlog --skip-gtids binlog.000001 > /tmp/dump.sql mysql -u root -p -e "source /tmp/dump.sql"
Обычно этот параметр не следует использовать в рабочей среде или при восстановлении, за исключением особых, редких случаев, когда GTIDs активно нежелательны. Например, администратор может захотеть дублировать выбранные транзакции (например, определения таблиц) из одного развертывания в другое не связанное развертывание, которое не будет осуществлять репликацию к или из оригинального. В таком случае,
--skip-gtidsможно использовать, чтобы позволить администратору применить транзакции так, как если бы они были новыми, и гарантировать, что развертывания останутся не связанными. Однако этот параметр следует использовать только в том случае, если включение GTIDs вызывает известную проблему для вашего варианта использования. -
--socket=,path-SpathФормат командной строки --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Допустимые значения OFFONSTRICTУправляет включением режима FIPS на стороне клиента. Параметр
--ssl-fips-modeотличается от других параметров--ssl-тем, что он не используется для установления шифрованных соединений, а для определения, какие криптографические операции разрешить. См. Раздел 8.8, “Поддержка FIPS”.xxxРазрешены следующие значения
--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Тип Дата и время Начать чтение бинарного журнала с первого события, имеющего метку времени, равную или более позднюю, чем аргумент
datetime. Значениеdatetimeотносится к часовому поясу локальной машины, где вы выполняете mysqlbinlog. Значение должно быть в формате, принятом для типов данныхDATETIMEилиTIMESTAMP. Например:mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003
Этот параметр полезен для восстановления по состоянию на определенный момент времени. См. Раздел 9.5, “Восстановление по состоянию на определенный момент времени (инкрементное)”.
-
--start-position=,N-jNФормат командной строки --start-position=#Тип Числовое Начать декодирование бинарного журнала с позиции лога
N, включая в вывод все события, начинающиеся с позицииNили позже. Позиция — это байтовая позиция в файле журнала, а не счетчик событий; она должна указывать на начальную позицию события, чтобы получить полезный вывод. Этот параметр относится к первому файлу журнала, указанному в командной строке.Максимальное значение, поддерживаемое для этого параметра, составляет 18446744073709551616 (264-1), если также не используются
--read-from-remote-serverили--read-from-remote-source, в противном случае максимальное значение равно 4294967295.Этот параметр полезен для восстановления по состоянию на определенный момент времени. См. Раздел 9.5, “Восстановление по состоянию на определенный момент времени (инкрементное)”.
-
Формат командной строки --stop-datetime=datetimeОстанов чтения бинарного журнала на первом событии, имеющем метку времени, равную или более позднюю, чем аргумент
datetime. См. описание параметра--start-datetimeдля информации о значенииdatetime.Этот параметр полезен для восстановления по состоянию на определенный момент времени. См. Раздел 9.5, “Восстановление по состоянию на определенный момент времени (инкрементное)”.
-
Формат командной строки --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=#Тип 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 При указании имя передается в библиотеку
libmysqlclientC API с использованием опцииMYSQL_OPT_TLS_SNI_SERVERNAME. Имя сервера нечувствительно к регистру. Чтобы показать, какое имя сервера указал клиент для текущего сеанса, если таковое имеется, проверьте переменную состоянияTls_sni_server_name.Указание имени сервера (SNI) является расширением протокола TLS (OpenSSL должен быть скомпилирован с использованием расширений TLS для работы этой опции). Реализация SNI в MySQL представляет только сторону клиента.
-
Формат командной строки --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-uuser_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Проверить контрольные суммы в файлах бинарного журнала.
-
--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.