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