### 4.6.9 mysqlbinlog — 处理二进制日志文件的实用程序

[4.6.9.1 mysqlbinlog 十六进制转储格式](mysqlbinlog-hexdump.html)
[4.6.9.2 mysqlbinlog 行事件展示](mysqlbinlog-row-events.html)
[4.6.9.3 使用 mysqlbinlog 备份二进制日志文件](mysqlbinlog-backup.html)
[4.6.9.4 指定mysqlbinlog服务器ID](mysqlbinlog-server-id.html)

[](<>)

服务器的二进制日志由包含描述数据库内容修改的“事件”的文件组成。服务器以二进制格式写入这些文件。要以文本格式显示其内容，请使用[**mysqlbinlog**](mysqlbinlog.html)效用。你也可以使用[**mysqlbinlog**](mysqlbinlog.html)在复制设置中显示由副本服务器写入的中继日志文件的内容，因为中继日志与二进制日志具有相同的格式。二进制日志和中继日志在中进一步讨论[第 5.4.4 节，“二进制日志”](binary-log.html)， 和[第 17.2.4 节，“中继日志和复制元数据存储库”](replica-logs.html).

调用[**mysqlbinlog**](mysqlbinlog.html)像这样：

```
mysqlbinlog [options] log_file ...
```

例如，显示名为的二进制日志文件的内容`二进制日志.000003`, 使用这个命令：

```
mysqlbinlog binlog.0000003
```

输出包括包含在`二进制日志.000003`.对于基于语句的日志记录，事件信息包括 SQL 语句、执行它的服务器的 ID、执行语句时的时间戳、花费的时间等等。对于基于行的日志记录，事件指示行更改而不是 SQL 语句。看[第 17.2.1 节，“复制格式”](replication-formats.html), 有关日志记录模式的信息。

事件前面有提供附加信息的标题注释。例如：

```
# at 141
#100309  9:28:36 server id 123  end_log_pos 245
  Query thread_id=3350  exec_time=11  error_code=0
```

在第一行，后面的数字`在`指示事件在二进制日志文件中的文件偏移量或起始位置。

第二行以日期和时间开头，指示语句何时在事件起源的服务器上开始。对于复制，此时间戳会传播到副本服务器。`服务器编号`是个[`server_id`](replication-options.html#sysvar_server_id)事件发起的服务器的值。`end_log_pos`表示下一个事件的开始位置（即当前事件的结束位置+1）。`线程 ID`指示哪个线程执行了事件。`执行时间`是在复制源服务器上执行事件所花费的时间。在副本上，它是副本上的结束执行时间减去源上的开始执行时间的差值。差异可作为复制落后于源多少的指标。`错误代码`表示执行事件的结果。零表示没有发生错误。

笔记

使用事件组时，可以将事件的文件偏移量归为一组，将事件的注释归为一组。不要将这些分组事件误认为是空白文件偏移。

从输出[**mysqlbinlog**](mysqlbinlog.html)可以重新执行（例如，通过使用它作为输入[**mysql**](mysql.html)) 重做日志中的语句。这对于服务器意外退出后的恢复操作很有用。有关其他用法示例，请参阅本节后面的讨论和[第 7.5 节，“时间点（增量）恢复”](point-in-time-recovery.html).执行内部使用[`二进制日志`](binlog.html)使用的语句[**mysqlbinlog**](mysqlbinlog.html)，用户需要[`BINLOG_ADMIN`](privileges-provided.html#priv_binlog-admin)特权（或已弃用的[`极好的`](privileges-provided.html#priv_super)特权），或[`REPLICATION_APPLIER`](privileges-provided.html#priv_replication-applier)权限加上执行每个日志事件的适当权限。

您可以使用[**mysqlbinlog**](mysqlbinlog.html)直接读取二进制日志文件并将它们应用到本地 MySQL 服务器。您还可以使用以下命令从远程服务器读取二进制日志[`--从远程服务器读取`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-server)选项。要读取远程二进制日志，可以给出连接参数选项来指示如何连接到服务器。这些选项是[`- 主持人`](mysqlbinlog.html#option_mysqlbinlog_host),[`- 密码`](mysqlbinlog.html#option_mysqlbinlog_password),[`- 港口`](mysqlbinlog.html#option_mysqlbinlog_port),[`- 协议`](mysqlbinlog.html#option_mysqlbinlog_protocol),[`- 插座`](mysqlbinlog.html#option_mysqlbinlog_socket)， 和[`- 用户`](mysqlbinlog.html#option_mysqlbinlog_user).

当二进制日志文件被加密时，可以从 MySQL 8.0.14 开始，[**mysqlbinlog**](mysqlbinlog.html)无法直接读取，但可以使用[`--从远程服务器读取`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-server)选项。二进制日志文件在服务器的[`binlog_encryption`](replication-options-binary-log.html#sysvar_binlog_encryption)系统变量设置为`在`.这[`显示二进制日志`](show-binary-logs.html)语句显示特定的二进制日志文件是加密的还是未加密的。加密和未加密的二进制日志文件也可以使用加密日志文件文件头开头的幻数来区分（`0xFD62696E`)，这与用于未加密日志文件的不同 (`0xFE62696E`）。请注意，从 MySQL 8.0.14 开始，[**mysqlbinlog**](mysqlbinlog.html)如果您尝试直接读取加密的二进制日志文件，则会返回一个合适的错误，但旧版本的[**mysqlbinlog**](mysqlbinlog.html)根本不将该文件识别为二进制日志文件。有关二进制日志加密的更多信息，请参阅[第 17.3.2 节，“加密二进制日志文件和中继日志文件”](replication-binlog-encryption.html).

当二进制日志事务有效负载被压缩时，可以从 MySQL 8.0.20 开始，[**mysqlbinlog**](mysqlbinlog.html)该版本的版本自动解压缩和解码事务有效负载，并像未压缩事件一样打印它们。旧版本的[**mysqlbinlog**](mysqlbinlog.html)无法读取压缩的事务有效负载。当服务器的[`binlog_transaction_compression`](replication-options-binary-log.html#sysvar_binlog_transaction_compression)系统变量设置为`在`，事务有效负载被压缩，然后作为单个事件写入服务器的二进制日志文件（a`Transaction_payload_event`）。随着[`--详细`](mysqlbinlog.html#option_mysqlbinlog_verbose)选项，[**mysqlbinlog**](mysqlbinlog.html)添加注释说明使用的压缩算法、最初接收的压缩有效载荷大小以及解压缩后产生的有效载荷大小。

笔记

结束位置（`end_log_pos`） 那[**mysqlbinlog**](mysqlbinlog.html)作为压缩事务有效负载一部分的单个事件的状态与原始压缩有效负载的结束位置相同。因此，多个解压缩事件可以具有相同的结束位置。

[**mysqlbinlog**](mysqlbinlog.html)如果事务有效负载已被压缩，则 自己的连接压缩做的更少，但仍对未压缩的事务和标头进行操作。

有关二进制日志事务压缩的更多信息，请参阅[第 5.4.4.5 节，“二进制日志事务压缩”](binary-log-transaction-compression.html).

跑步时[**mysqlbinlog**](mysqlbinlog.html)对于大型二进制日志，请注意文件系统是否有足够的空间用于生成的文件。配置目录[**mysqlbinlog**](mysqlbinlog.html)用于临时文件，使用`TMPDIR`环境变量。

[**mysqlbinlog**](mysqlbinlog.html)设置的值[`伪副本模式`](server-system-variables.html#sysvar_pseudo_replica_mode)要么[`伪从模式`](server-system-variables.html#sysvar_pseudo_slave_mode)在执行任何 SQL 语句之前设置为 true。此系统变量影响 XA 事务的处理，即`original_commit_timestamp`复制延迟时间戳和[`original_server_version`](replication-options-source.html#sysvar_original_server_version)系统变量和不支持的 SQL 模式。

[**mysqlbinlog**](mysqlbinlog.html)支持以下选项，可以在命令行中指定，也可以在`[mysqlbinlog]`和`[客户]`选项文件的组。有关 MySQL 程序使用的选项文件的信息，请参阅[第 4.2.2.2 节，“使用选项文件”](option-files.html).

[](<>)

**表 4.22 mysqlbinlog 选项**

| 选项名称 | 描述 | 介绍 | 已弃用 |
| ---- | --- | --- | --- |
| [--base64-输出](mysqlbinlog.html#option_mysqlbinlog_base64-output) | 使用 base-64 编码打印二进制日志条目 |  |  |
| [--绑定地址](mysqlbinlog.html#option_mysqlbinlog_bind-address) | 使用指定的网络接口连接 MySQL Server |  |  |
| [--binlog-row-event-max-size](mysqlbinlog.html#option_mysqlbinlog_binlog-row-event-max-size) | 二进制日志最大事件大小 |  |  |
| [--字符集目录](mysqlbinlog.html#option_mysqlbinlog_character-sets-dir) | 安装字符集的目录 |  |  |
| [--压缩](mysqlbinlog.html#option_mysqlbinlog_compress) | 压缩客户端和服务器之间发送的所有信息 | 8.0.17 | 8.0.18 |
| [--压缩算法](mysqlbinlog.html#option_mysqlbinlog_compression-algorithms) | 允许连接到服务器的压缩算法 | 8.0.18 |  |
| [--连接服务器 ID](mysqlbinlog.html#option_mysqlbinlog_connection-server-id) | 用于测试和调试。有关适用的默认值和其他详细信息，请参见文本 |  |  |
| [--数据库](mysqlbinlog.html#option_mysqlbinlog_database) | 仅列出此数据库的条目 |  |  |
| [--调试](mysqlbinlog.html#option_mysqlbinlog_debug) | 写调试日志 |  |  |
| [--调试检查](mysqlbinlog.html#option_mysqlbinlog_debug-check) | 程序退出时打印调试信息 |  |  |
| [--调试信息](mysqlbinlog.html#option_mysqlbinlog_debug-info) | 程序退出时打印调试信息、内存和 CPU 统计信息 |  |  |
| [--默认身份验证](mysqlbinlog.html#option_mysqlbinlog_default-auth) | 要使用的身份验证插件 |  |  |
| [--defaults-额外文件](mysqlbinlog.html#option_mysqlbinlog_defaults-extra-file) | 除了通常的选项文件外，还读取命名的选项文件 |  |  |
| [--默认文件](mysqlbinlog.html#option_mysqlbinlog_defaults-file) | 只读命名选项文件 |  |  |
| [--defaults-组后缀](mysqlbinlog.html#option_mysqlbinlog_defaults-group-suffix) | 选项组后缀值 |  |  |
| [--禁用-日志-bin](mysqlbinlog.html#option_mysqlbinlog_disable-log-bin) | 禁用二进制日志 |  |  |
| [--排除-gtids](mysqlbinlog.html#option_mysqlbinlog_exclude-gtids) | 不显示提供的 GTID 集中的任何组 |  |  |
| [--force-if-open](mysqlbinlog.html#option_mysqlbinlog_force-if-open) | 读取二进制日志文件，即使打开或未正确关闭 |  |  |
| [--强制阅读](mysqlbinlog.html#option_mysqlbinlog_force-read) | 如果 mysqlbinlog 读取到它无法识别的二进制日志事件，它会打印一个警告 |  |  |
| [--get-server-public-key](mysqlbinlog.html#option_mysqlbinlog_get-server-public-key) | 从服务器请求 RSA 公钥 |  |  |
| [--帮助](mysqlbinlog.html#option_mysqlbinlog_help) | 显示帮助信息并退出 |  |  |
| [--hexdump](mysqlbinlog.html#option_mysqlbinlog_hexdump) | 显示登录评论的十六进制转储 |  |  |
| [--主持人](mysqlbinlog.html#option_mysqlbinlog_host) | MySQL服务器所在的主机 |  |  |
| [--幂等](mysqlbinlog.html#option_mysqlbinlog_idempotent) | 使服务器在仅处理来自该会话的二进制日志更新时使用幂等模式 |  |  |
| [--包括-gtids](mysqlbinlog.html#option_mysqlbinlog_include-gtids) | 仅显示提供的 GTID 集中的组 |  |  |
| [--本地负载](mysqlbinlog.html#option_mysqlbinlog_local-load) | 为指定目录中的 LOAD DATA 准备本地临时文件 |  |  |
| [--登录路径](mysqlbinlog.html#option_mysqlbinlog_login-path) | 从 .mylogin.cnf 读取登录路径选项 |  |  |
| [--无默认值](mysqlbinlog.html#option_mysqlbinlog_no-defaults) | 不读取选项文件 |  |  |
| [--抵消](mysqlbinlog.html#option_mysqlbinlog_offset) | 跳过日志中的前 N ​​个条目 |  |  |
| [--密码](mysqlbinlog.html#option_mysqlbinlog_password) | 连接服务器时使用的密码 |  |  |
| [--插件目录](mysqlbinlog.html#option_mysqlbinlog_plugin-dir) | 插件安装目录 |  |  |
| [--港口](mysqlbinlog.html#option_mysqlbinlog_port) | 用于连接的 TCP/IP 端口号 |  |  |
| [--打印默认值](mysqlbinlog.html#option_mysqlbinlog_print-defaults) | 打印默认选项 |  |  |
| [--打印表元数据](mysqlbinlog.html#option_mysqlbinlog_print-table-metadata) | 打印表元数据 |  |  |
| [--协议](mysqlbinlog.html#option_mysqlbinlog_protocol) | 要使用的传输协议 |  |  |
| [--生的](mysqlbinlog.html#option_mysqlbinlog_raw) | 将原始（二进制）格式的事件写入输出文件 |  |  |
| [--从远程主机读取](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-master) | 从 MySQL 复制源服务器读取二进制日志，而不是读取本地日志文件 |  | 8.0.26 |
| [--从远程服务器读取](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-server) | 从 MySQL 服务器而不是本地日志文件读取二进制日志 |  |  |
| [--从远程源读取](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-source) | 从 MySQL 复制源服务器读取二进制日志，而不是读取本地日志文件 | 8.0.26 |  |
| [--要求行格式](mysqlbinlog.html#option_mysqlbinlog_require-row-format) | 需要基于行的二进制日志记录格式 | 8.0.19 |  |
| [--结果文件](mysqlbinlog.html#option_mysqlbinlog_result-file) | 直接输出到命名文件 |  |  |
| [--重写数据库](mysqlbinlog.html#option_mysqlbinlog_rewrite-db) | 从以基于行的格式编写的日志进行回放时，为数据库创建重写规则。可以多次使用 |  |  |
| [--服务器 ID](mysqlbinlog.html#option_mysqlbinlog_server-id) | 仅提取由具有给定服务器 ID 的服务器创建的事件 |  |  |
| [--server-id 位](mysqlbinlog.html#option_mysqlbinlog_server-id-bits) | 告诉 mysqlbinlog 当日志由其 server-id-bits 设置为小于最大值的 mysqld 写入时，如何解释二进制日志中的服务器 ID；仅受 MySQL Cluster 版本的 mysqlbinlog 支持 |  |  |
| [--服务器公钥路径](mysqlbinlog.html#option_mysqlbinlog_server-public-key-path) | 包含 RSA 公钥的文件的路径名 |  |  |
| [--set-charset](mysqlbinlog.html#option_mysqlbinlog_set-charset) | 添加一个 SET NAMES 字符集\_输出的名称语句 |  |  |
| [--shared-memory-base-name](mysqlbinlog.html#option_mysqlbinlog_shared-memory-base-name) | 共享内存连接的共享内存名称（仅限 Windows） |  |  |
| [--简写](mysqlbinlog.html#option_mysqlbinlog_short-form) | 仅显示日志中包含的语句 |  |  |
| [--skip-gtids](mysqlbinlog.html#option_mysqlbinlog_skip-gtids) | 不要在输出转储文件中包含二进制日志文件中的 GTID |  |  |
| [--插座](mysqlbinlog.html#option_mysqlbinlog_socket) | 要使用的 Unix 套接字文件或 Windows 命名管道 |  |  |
| [--ssl-ca](mysqlbinlog.html#option_mysqlbinlog_ssl) | 包含受信任 SSL 证书颁发机构列表的文件 |  |  |
| [--ssl-capath](mysqlbinlog.html#option_mysqlbinlog_ssl) | 包含受信任的 SSL 证书颁发机构证书文件的目录 |  |  |
| [--ssl 证书](mysqlbinlog.html#option_mysqlbinlog_ssl) | 包含 X.509 证书的文件 |  |  |
| [--ssl密码](mysqlbinlog.html#option_mysqlbinlog_ssl) | 连接加密的允许密码 |  |  |
| [--ssl-crl](mysqlbinlog.html#option_mysqlbinlog_ssl) | 包含证书吊销列表的文件 |  |  |
| [--ssl-crlpath](mysqlbinlog.html#option_mysqlbinlog_ssl) | 包含证书吊销列表文件的目录 |  |  |
| [--ssl-fips 模式](mysqlbinlog.html#option_mysqlbinlog_ssl-fips-mode) | 客户端是否开启 FIPS 模式 |  |  |
| [--ssl 密钥](mysqlbinlog.html#option_mysqlbinlog_ssl) | 包含 X.509 密钥的文件 |  |  |
| [--ssl 模式](mysqlbinlog.html#option_mysqlbinlog_ssl) | 连接到服务器的所需安全状态 |  |  |
| [--ssl 会话数据](mysqlbinlog.html#option_mysqlbinlog_ssl) | 包含 SSL 会话数据的文件 | 8.0.29 |  |
| [--ssl-session-data-continue-on-failed-reuse](mysqlbinlog.html#option_mysqlbinlog_ssl) | 会话重用失败时是否建立连接 | 8.0.29 |  |
| [--开始日期时间](mysqlbinlog.html#option_mysqlbinlog_start-datetime) | 从时间戳等于或晚于 datetime 参数的第一个事件读取二进制日志 |  |  |
| [--开始位置](mysqlbinlog.html#option_mysqlbinlog_start-position) | 从位置等于或大于参数的第一个事件解码二进制日志 |  |  |
| [--停止日期时间](mysqlbinlog.html#option_mysqlbinlog_stop-datetime) | 在时间戳等于或大于 datetime 参数的第一个事件中停止读取二进制日志 |  |  |
| [-- 停止 - 永不](mysqlbinlog.html#option_mysqlbinlog_stop-never) | 读取最后一个二进制日志文件后保持连接到服务器 |  |  |
| [--stop-never-slave-server-id](mysqlbinlog.html#option_mysqlbinlog_stop-never-slave-server-id) | 连接服务器时要报告的从服务器 ID |  |  |
| [--停止位置](mysqlbinlog.html#option_mysqlbinlog_stop-position) | 在位置等于或大于参数的第一个事件处停止解码二进制日志 |  |  |
| [--tls-密码套件](mysqlbinlog.html#option_mysqlbinlog_tls-ciphersuites) | 用于加密连接的允许 TLSv1.3 密码套件 | 8.0.16 |  |
| [--tls-版本](mysqlbinlog.html#option_mysqlbinlog_tls-version) | 加密连接的允许 TLS 协议 |  |  |
| [--到最后的日志](mysqlbinlog.html#option_mysqlbinlog_to-last-log) | 不要在 MySQL 服务器请求的二进制日志末尾停止，而是继续打印到最后一个二进制日志的末尾 |  |  |
| [--用户](mysqlbinlog.html#option_mysqlbinlog_user) | 连接到服务器时使用的 MySQL 用户名 |  |  |
| [--详细](mysqlbinlog.html#option_mysqlbinlog_verbose) | 将行事件重构为 SQL 语句 |  |  |
| [--verify-binlog-校验和](mysqlbinlog.html#option_mysqlbinlog_verify-binlog-checksum) | 验证二进制日志中的校验和 |  |  |
| [--版本](mysqlbinlog.html#option_mysqlbinlog_version) | 显示版本信息并退出 |  |  |
| [--zstd-压缩级别](mysqlbinlog.html#option_mysqlbinlog_zstd-compression-level) | 与使用 zstd 压缩的服务器的连接的压缩级别 | 8.0.18 |  |

-   [](<>) [`- 帮助`](mysqlbinlog.html#option_mysqlbinlog_help),`-？`

    [](<>)[](<>)

    显示帮助信息并退出。

-   [](<>) [`--base64-输出=*`价值`*`](mysqlbinlog.html#option_mysqlbinlog_base64-output)

    [](<>)[](<>)

    此选项确定何时应使用编码为 base-64 字符串显示事件[`二进制日志`](binlog.html)陈述。该选项具有以下允许值（不区分大小写）：

    -   `汽车`（“自动”）或`不规范`（“未指定”）显示[`二进制日志`](binlog.html)必要时自动声明语句（即，用于格式描述事件和行事件）。如果不[`--base64-输出`](mysqlbinlog.html#option_mysqlbinlog_base64-output)给出选项，效果同[`--base64-输出=自动`](mysqlbinlog.html#option_mysqlbinlog_base64-output).

        笔记

        自动的[`二进制日志`](binlog.html)如果您打算使用的输出，则 display 是唯一安全的行为[**mysqlbinlog**](mysqlbinlog.html)重新执行二进制日志文件内容。其他选项值仅用于调试或测试目的，因为它们可能会产生不包括可执行形式的所有事件的输出。

    -   `绝不`原因[`二进制日志`](binlog.html)不显示的语句。[**mysqlbinlog**](mysqlbinlog.html)如果发现必须使用显示的行事件，则退出并出现错误[`二进制日志`](binlog.html).

    -   `解码行`指定为[**mysqlbinlog**](mysqlbinlog.html)您打算将行事件解码并显示为注释的 SQL 语句，同时指定[`--详细`](mysqlbinlog.html#option_mysqlbinlog_verbose)选项。喜欢`绝不`,`解码行`抑制显示[`二进制日志`](binlog.html)陈述，但不同于`绝不`，如果找到行事件，它不会因错误而退出。

        对于显示效果的示例[`--base64-输出`](mysqlbinlog.html#option_mysqlbinlog_base64-output)和[`--详细`](mysqlbinlog.html#option_mysqlbinlog_verbose)关于行事件输出，请参见[第 4.6.9.2 节，“mysqlbinlog 行事件显示”](mysqlbinlog-row-events.html).

-   [](<>) [`--绑定地址=*`IP地址`*`](mysqlbinlog.html#option_mysqlbinlog_bind-address)

    [](<>)[](<>)

    在具有多个网络接口的计算机上，使用此选项选择用于连接MySQL服务器的接口。

-   [](<>) [`--binlog行事件最大大小=*`N`*`](mysqlbinlog.html#option_mysqlbinlog_binlog-row-event-max-size)

    [](<>)[](<>)

    | 命令行格式 | `--binlog行事件最大大小=#` |
    | ----- | ------------------- |
    | 类型 | 数字的 |
    | 默认值 | `4294967040` |
    | 最小值 | `256` |
    | 最大值 | `18446744073709547520` |

    指定基于行的二进制日志事件的最大大小（字节）。如果可能，行被分组为小于此大小的事件。该值应为256的倍数。默认值为4GB。

-   [](<>) [`--字符集目录=*`目录名`*`](mysqlbinlog.html#option_mysqlbinlog_character-sets-dir)

    [](<>)[](<>)

    安装字符集的目录。看见[第10.15节，“字符集配置”](charset-configuration.html).

-   [](<>) [`--压缩`](mysqlbinlog.html#option_mysqlbinlog_compress)

    [](<>)[](<>)

    如果可能，压缩客户端和服务器之间发送的所有信息。看见[第4.2.8节，“连接压缩控制”](connection-compression-control.html).

    这个选项是在MySQL 8.0.17中添加的。从MySQL 8.0.18开始，它已被弃用。预计它将在MySQL的未来版本中被删除。看见[配置旧连接压缩](connection-compression-control.html#connection-compression-legacy-configuration).

-   [](<>) [`--压缩算法=*`价值`*`](mysqlbinlog.html#option_mysqlbinlog_compression-algorithms)

    [](<>)[](<>)

    服务器连接允许的压缩算法。可用的算法与[`协议压缩算法`](server-system-variables.html#sysvar_protocol_compression_algorithms)系统变量。默认值为`未压缩`.

    有关更多信息，请参阅[第4.2.8节，“连接压缩控制”](connection-compression-control.html).

    这个选项是在MySQL 8.0.18中添加的。

-   [](<>) [`--连接服务器id=*`服务器id`*`](mysqlbinlog.html#option_mysqlbinlog_connection-server-id)

    [](<>)[](<>)

    [`--连接服务器id`](mysqlbinlog.html#option_mysqlbinlog_connection-server-id)指定要使用的服务器ID[**mysqlbinlog**](mysqlbinlog.html)报告它何时连接到服务器。它可用于避免与副本服务器或其他服务器的ID冲突[**mysqlbinlog**](mysqlbinlog.html)过程

    如果[`--从远程服务器读取`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-server)选项被指定，[**mysqlbinlog**](mysqlbinlog.html)报告服务器ID 0，该ID告诉服务器在发送最后一个日志文件后断开连接（非阻塞行为）。如果[`--永不停止`](mysqlbinlog.html#option_mysqlbinlog_stop-never)还指定了选项以保持与服务器的连接，[**mysqlbinlog**](mysqlbinlog.html)默认情况下报告服务器ID为1而不是0，并且[`--连接服务器id`](mysqlbinlog.html#option_mysqlbinlog_connection-server-id)如果需要，可用于替换该服务器ID。看见[第4.6.9.4节，“指定mysqlbinlog服务器ID”](mysqlbinlog-server-id.html).

-   [](<>) [`--数据库=*`db\_名称`*`](mysqlbinlog.html#option_mysqlbinlog_database), `-d*`db\_名称`*`

    [](<>)[](<>)

    此选项会导致[**mysqlbinlog**](mysqlbinlog.html)从二进制日志（仅本地日志）中输出*`db_名称`*已被选为默认数据库[`使用`](use.html).

    这个[`--数据库`](mysqlbinlog.html#option_mysqlbinlog_database)选择[**mysqlbinlog**](mysqlbinlog.html)类似于[`--binlog do db`](replication-options-binary-log.html#option_mysqld_binlog-do-db)选择[**mysqld**](mysqld.html)，但只能用于指定一个数据库。如果[`--数据库`](mysqlbinlog.html#option_mysqlbinlog_database)多次给定，只使用最后一个实例。

    此选项的效果取决于使用的是基于语句还是基于行的日志记录格式，其效果与[`--binlog do db`](replication-options-binary-log.html#option_mysqld_binlog-do-db)取决于使用的是基于语句的日志记录还是基于行的日志记录。

    **基于语句的日志记录。**那个[`--数据库`](mysqlbinlog.html#option_mysqlbinlog_database)选项的工作原理如下：

    -   虽然*`db_名称`*是默认数据库，无论语句是否在中修改表，都会输出语句*`db_名称`*或者另一个数据库。

    -   除非*`db_名称`*如果选择作为默认数据库，则不会输出语句，即使它们在中修改了表*`db_名称`*.

    -   这是一个例外[`创建数据库`](create-database.html), [`改变数据库`](alter-database.html)和[`删除数据库`](drop-database.html).数据库正在运行*创建、更改或删除*在确定是否输出语句时，被视为默认数据库。

        假设二进制日志是通过使用基于语句的日志记录执行以下语句创建的：

    ```
    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——数据库=测试**](mysqlbinlog.html)不输出前两个[`插入`](insert.html)语句，因为没有默认数据库。它输出三个[`插入`](insert.html)以下声明[`使用测试`](use.html)，但不是三个[`插入`](insert.html)以下声明[`使用db2`](use.html).

    [**mysqlbinlog——数据库=db2**](mysqlbinlog.html)不输出前两个[`插入`](insert.html)语句，因为没有默认数据库。它不输出这三个参数[`插入`](insert.html)以下声明[`使用测试`](use.html)，但输出三个[`插入`](insert.html)以下声明[`使用db2`](use.html).

    **基于行的日志记录。**  [**mysqlbinlog**](mysqlbinlog.html)仅输出更改属于的表的条目*`db_名称`*默认数据库对此没有影响。假设刚才描述的二进制日志是使用基于行的日志记录而不是基于语句的日志记录创建的。[**mysqlbinlog——数据库=测试**](mysqlbinlog.html)仅输出修改的条目`t1`在测试数据库中，无论[`使用`](use.html)或者默认数据库是什么。

    如果服务器正在使用[`binlog_格式`](replication-options-binary-log.html#sysvar_binlog_format)开始`混合的`你希望它可以使用[**mysqlbinlog**](mysqlbinlog.html)和[`--数据库`](mysqlbinlog.html#option_mysqlbinlog_database)选项，则必须确保修改的表位于所选数据库中[`使用`](use.html)（尤其是，不应使用跨数据库更新。）

    当与[`--重写数据库`](mysqlbinlog.html#option_mysqlbinlog_rewrite-db)选择权`--重写数据库`优先选择权；然后`--数据库`选项，使用重写的数据库名称。提供选项的顺序在这方面没有区别。

-   [](<>) [`--调试[=*`调试选项`*]`](mysqlbinlog.html#option_mysqlbinlog_debug), `-# [*`调试选项`*]`

    [](<>)[](<>)

    编写调试日志。典型的*`调试选项`*字符串是`d:t:o*`文件名`*`.默认值为`d:t:o，/tmp/mysqlbinlog。查出`.

    仅当MySQL是使用[`用_调试`](source-configuration-options.html#option_cmake_with_debug)Oracle提供的.MySQL版本二进制文件是*不*使用此选项构建。

-   [](<>) [`--调试检查`](mysqlbinlog.html#option_mysqlbinlog_debug-check)

    [](<>)[](<>)

    程序退出时打印一些调试信息。

    仅当MySQL是使用[`用_调试`](source-configuration-options.html#option_cmake_with_debug)Oracle提供的.MySQL版本二进制文件是*不*使用此选项构建。

-   [](<>) [`--调试信息`](mysqlbinlog.html#option_mysqlbinlog_debug-info)

    [](<>)[](<>)

    程序退出时打印调试信息、内存和CPU使用统计信息。

    仅当MySQL是使用[`用_调试`](source-configuration-options.html#option_cmake_with_debug)Oracle提供的.MySQL版本二进制文件是*不*使用此选项构建。

-   [](<>) [`--默认身份验证=*`插件`*`](mysqlbinlog.html#option_mysqlbinlog_default-auth)

    [](<>)[](<>)

    关于使用哪个客户端身份验证插件的提示。看见[第6.2.17节，“可插拔认证”](pluggable-authentication.html).

-   [](<>) [`--默认额外文件=*`文件名`*`](mysqlbinlog.html#option_mysqlbinlog_defaults-extra-file)

    [](<>)[](<>)

    在全局选项文件之后读取此选项文件，但（在Unix上）在用户选项文件之前读取。如果文件不存在或无法访问，则会发生错误。如果*`文件名`*不是绝对路径名，而是相对于当前目录进行解释。

    有关此选项和其他选项文件选项的更多信息，请参阅[第4.2.2.3节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--默认文件=*`文件名`*`](mysqlbinlog.html#option_mysqlbinlog_defaults-file)

    [](<>)[](<>)

    仅使用给定的选项文件。如果文件不存在或无法访问，则会发生错误。如果*`文件名`*不是绝对路径名，而是相对于当前目录进行解释。

    例外：即使有[`--默认文件`](option-file-options.html#option_general_defaults-file)，客户端程序读取`迈洛金先生。cnf`.

    有关此选项和其他选项文件选项的更多信息，请参阅[第4.2.2.3节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--默认组后缀=*`str`*`](mysqlbinlog.html#option_mysqlbinlog_defaults-group-suffix)

    [](<>)[](<>)

    不仅要阅读常用选项组，还要阅读带有常用名称和后缀的组*`str`*例如[**mysqlbinlog**](mysqlbinlog.html)通常阅读`[客户]`和`[mysqlbinlog]`组。如果该选项被给出为[`--默认组后缀=_其他`](mysqlbinlog.html#option_mysqlbinlog_defaults-group-suffix), [**mysqlbinlog**](mysqlbinlog.html)还读到`[客户/其他]`和`[mysqlbinlog_other]`组。

    有关此选项和其他选项文件选项的更多信息，请参阅[第4.2.2.3节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--禁用日志箱`](mysqlbinlog.html#option_mysqlbinlog_disable-log-bin), `-D`

    [](<>)[](<>)

    禁用二进制日志记录。如果使用[`--最后一次记录`](mysqlbinlog.html#option_mysqlbinlog_to-last-log)选项和将输出发送到同一个MySQL服务器。在意外退出后恢复时，此选项也很有用，以避免重复记录的语句。

    此选项会导致[**mysqlbinlog**](mysqlbinlog.html)包括[`设置sql_log_bin=0`](set-sql-log-bin.html)语句来禁用剩余输出的二进制日志记录。操纵[`sql_log_bin`](replication-options-binary-log.html#sysvar_sql_log_bin)系统变量是受限操作，因此此选项要求您具有足够的权限来设置受限会话变量。看见[第5.1.9.1节，“系统变量权限”](system-variable-privileges.html).

-   [](<>) [`--排除GTID=*`gtid\_集`*`](mysqlbinlog.html#option_mysqlbinlog_exclude-gtids)

    [](<>)[](<>)

    不要显示列表中列出的任何组*`gtid_集`*.

-   [](<>) [`--打开时强制`](mysqlbinlog.html#option_mysqlbinlog_force-if-open), `-F`

    [](<>)[](<>)

    读取二进制日志文件，即使它们已打开或未正确关闭。

-   [](<>) [`--强制读取`](mysqlbinlog.html#option_mysqlbinlog_force-read), `-f`

    [](<>)[](<>)

    使用此选项，如果[**mysqlbinlog**](mysqlbinlog.html)读取无法识别的二进制日志事件，打印警告，忽略该事件，然后继续。如果没有这个选择，[**mysqlbinlog**](mysqlbinlog.html)如果读取到此类事件，则停止。

-   [](<>) [`--获取服务器公钥`](mysqlbinlog.html#option_mysqlbinlog_get-server-public-key)

    [](<>)[](<>)

    从服务器请求基于RSA密钥对的密码交换所需的公钥。此选项适用于通过`缓存_sha2_密码`身份验证插件。对于该插件，除非请求，否则服务器不会发送公钥。对于未使用该插件进行身份验证的帐户，此选项将被忽略。如果不使用基于RSA的密码交换，它也会被忽略，就像客户端使用安全连接连接到服务器时一样。

    如果[`--服务器公钥路径=*`文件名`*`](mysqlbinlog.html#option_mysqlbinlog_server-public-key-path)给定并指定有效的公钥文件，它优先于[`--获取服务器公钥`](mysqlbinlog.html#option_mysqlbinlog_get-server-public-key).

    有关`缓存_sha2_密码`插件，看[第6.4.1.2节，“缓存SHA-2可插拔身份验证”](caching-sha2-pluggable-authentication.html).

-   [](<>) [`--Hextump`](mysqlbinlog.html#option_mysqlbinlog_hexdump), `-H`

    [](<>)[](<>)

    显示登录注释的十六进制转储，如中所述[第4.6.9.1节，“mysqlbinlog十六进制转储格式”](mysqlbinlog-hexdump.html).十六进制输出有助于复制调试。

-   [](<>) [`--主人=*`主机名`*`](mysqlbinlog.html#option_mysqlbinlog_host), `-h*`主机名`*`

    [](<>)[](<>)

    从给定主机上的MySQL服务器获取二进制日志。

-   [](<>) [`--幂等元`](mysqlbinlog.html#option_mysqlbinlog_idempotent)

    [](<>)[](<>)

    告诉MySQL服务器在处理更新时使用幂等模式；这会导致服务器在处理更新时在当前会话中遇到的任何重复密钥或未找到密钥错误被抑制。当需要或有必要将一个或多个二进制日志重放到MySQL服务器时，此选项可能会被证明很有用，因为MySQL服务器可能不包含日志引用的所有数据。

    此选项的影响范围包括当前[**mysqlbinlog**](mysqlbinlog.html)仅限客户端和会话。

-   [](<>) [`--包括GTID=*`gtid\_集`*`](mysqlbinlog.html#option_mysqlbinlog_include-gtids)

    [](<>)[](<>)

    仅显示列表中列出的组*`gtid_集`*.

-   [](<>) [`--局部负荷=*`目录名`*`](mysqlbinlog.html#option_mysqlbinlog_local-load), `-l*`目录名`*`

    [](<>)[](<>)

    用于对应于[`加载数据`](load-data.html)声明，[**mysqlbinlog**](mysqlbinlog.html)从二进制日志事件中提取文件，将其作为临时文件写入本地文件系统，然后写入[`本地加载数据`](load-data.html)语句以导致加载文件。默认情况下，[**mysqlbinlog**](mysqlbinlog.html)将这些临时文件写入操作系统特定的目录。这个[`--局部负荷`](mysqlbinlog.html#option_mysqlbinlog_local-load)选项可用于显式指定[**mysqlbinlog**](mysqlbinlog.html)应准备本地临时文件。

    由于其他进程可以将文件写入默认的系统特定目录，因此建议指定[`--局部负荷`](mysqlbinlog.html#option_mysqlbinlog_local-load)选择[**mysqlbinlog**](mysqlbinlog.html)为数据文件指定不同的目录，然后通过指定[`--加载数据本地目录`](mysql-command-options.html#option_mysql_load-data-local-dir)选择[**mysql**](mysql.html)在处理来自[**mysqlbinlog**](mysqlbinlog.html).例如：

    ```
    mysqlbinlog --local-load=/my/local/data ...
        | mysql --load-data-local-dir=/my/local/data ...
    ```

    重要的

    这些临时文件不会被自动删除[**mysqlbinlog**](mysqlbinlog.html)或任何其他MySQL程序。

-   [](<>) [`--登录路径=*`名称`*`](mysqlbinlog.html#option_mysqlbinlog_login-path)

    [](<>)[](<>)

    从中的命名登录路径读取选项`迈洛金先生。cnf`登录路径文件。“登录路径”是一个选项组，包含指定要连接到哪个MySQL服务器以及要作为哪个帐户进行身份验证的选项。要创建或修改登录路径文件，请使用[**mysql\_配置\_编辑**](mysql-config-editor.html)公用事业看见[第4.6.7节，“mysql\_配置\_编辑器-MySQL配置实用程序“](mysql-config-editor.html).

    有关此选项和其他选项文件选项的更多信息，请参阅[第4.2.2.3节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--没有默认值`](mysqlbinlog.html#option_mysqlbinlog_no-defaults)

    [](<>)[](<>)

    不要读取任何选项文件。如果由于从选项文件中读取未知选项而导致程序启动失败，[`--没有默认值`](mysqlbinlog.html#option_mysqlbinlog_no-defaults)可以用来防止它们被读取。

    唯一的例外是`迈洛金先生。cnf`文件在任何情况下都会被读取，如果它存在的话。这允许以比命令行更安全的方式指定密码，即使在[`--没有默认值`](mysqlbinlog.html#option_mysqlbinlog_no-defaults)被使用了。创造`迈洛金先生。cnf`，使用[**mysql\_配置\_编辑**](mysql-config-editor.html)公用事业看见[第4.6.7节，“mysql\_配置\_编辑器-MySQL配置实用程序“](mysql-config-editor.html).

    有关此选项和其他选项文件选项的更多信息，请参阅[第4.2.2.3节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--抵消=*`N`*`](mysqlbinlog.html#option_mysqlbinlog_offset), `-o*`N`*`

    [](<>)[](<>)

    跳过第一步*`N`*日志中的条目。

-   [](<>) [`--打开文件限制=*`N`*`](mysqlbinlog.html#option_mysqlbinlog_open-files-limit)

    [](<>)[](<>)[](<>)

    指定要保留的打开文件描述符的数量。

-   [](<>) [`--密码[=*`暗语`*]`](mysqlbinlog.html#option_mysqlbinlog_password), `-p[*`暗语`*]`

    [](<>)[](<>)

    用于连接到服务器的MySQL帐户的密码。密码值是可选的。如果没有给出，[**mysqlbinlog**](mysqlbinlog.html)提示输入一个。如果给予的话，一定会有*没有空间*之间[`--密码=`](mysqlbinlog.html#option_mysqlbinlog_password)或`-p`以及它后面的密码。如果未指定密码选项，默认设置为不发送密码。

    在命令行上指定密码应该被认为是不安全的。要避免在命令行中给出密码，请使用选项文件。看见[第6.1.2.1节，“最终用户密码安全指南”](password-security-user.html).

    明确指定没有密码，并且[**mysqlbinlog**](mysqlbinlog.html)如果不提示输入，请使用[`--跳过密码`](mysqlbinlog.html#option_mysqlbinlog_password)选项

-   [](<>) [`--插件目录=*`目录名`*`](mysqlbinlog.html#option_mysqlbinlog_plugin-dir)

    [](<>)[](<>)

    查找插件的目录。如果[`--默认身份验证`](mysqlbinlog.html#option_mysqlbinlog_default-auth)选项用于指定身份验证插件，但[**mysqlbinlog**](mysqlbinlog.html)没有找到它。看见[第6.2.17节，“可插拔认证”](pluggable-authentication.html).

-   [](<>) [`--港口=*`港口号`*`](mysqlbinlog.html#option_mysqlbinlog_port), `-P*`港口号`*`

    [](<>)[](<>)[](<>)[](<>)

    用于连接到远程服务器的TCP/IP端口号。

-   [](<>) [`--打印默认值`](mysqlbinlog.html#option_mysqlbinlog_print-defaults)

    [](<>)[](<>)

    打印程序名及其从选项文件中获取的所有选项。

    有关此选项和其他选项文件选项的更多信息，请参阅[第4.2.2.3节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--打印表元数据`](mysqlbinlog.html#option_mysqlbinlog_print-table-metadata)

    [](<>)[](<>)

    打印二进制日志中与表相关的元数据。配置使用二进制文件记录的表相关元数据的数量[`binlog行元数据`](replication-options-binary-log.html#sysvar_binlog_row_metadata).

-   [](<>) [`--协议={TCP |套接字|管道|内存}`](mysqlbinlog.html#option_mysqlbinlog_protocol)

    [](<>)[](<>)

    用于连接到服务器的传输协议。当其他连接参数通常导致使用您想要的协议以外的协议时，它非常有用。有关允许值的详细信息，请参阅[第4.2.7节，“连接传输协议”](transport-protocols.html).

-   [](<>) [`--生的`](mysqlbinlog.html#option_mysqlbinlog_raw)

    [](<>)[](<>)

    默认情况下，[**mysqlbinlog**](mysqlbinlog.html)读取二进制日志文件并以文本格式写入事件。这个[`--生的`](mysqlbinlog.html#option_mysqlbinlog_raw)选项说明[**mysqlbinlog**](mysqlbinlog.html)以原始二进制格式编写。它的使用要求[`--从远程服务器读取`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-server)也可以使用，因为文件是从服务器请求的。[**mysqlbinlog**](mysqlbinlog.html)为从服务器读取的每个文件写入一个输出文件。这个[`--生的`](mysqlbinlog.html#option_mysqlbinlog_raw)选项可用于备份服务器的二进制日志。和[`--永不停止`](mysqlbinlog.html#option_mysqlbinlog_stop-never)选项，备份是“实时”的，因为[**mysqlbinlog**](mysqlbinlog.html)保持与服务器的连接。默认情况下，输出文件以与原始日志文件相同的名称写入当前目录。可以使用[`--结果文件`](mysqlbinlog.html#option_mysqlbinlog_result-file)选项有关更多信息，请参阅[第4.6.9.3节，“使用mysqlbinlog备份二进制日志文件”](mysqlbinlog-backup.html).

-   [](<>) [`--从远程源读取=*`类型`*`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-source)

    [](<>)[](<>)

    在MySQL 8.0.26中，使用`--从远程源读取`，在MySQL 8.0.26之前，使用[`--从远程主机读取`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-master).两个选项的效果相同。这些选项使用`COM_BINLOG_DUMP`或`COM_BINLOG_DUMP_GTID`通过将选项值设置为`BINLOG-DUMP-NON-gtid`或`BINLOG-DUMP-GTIDS`分别地如果[`--从远程源读取=BINLOG-DUMP-GTIDS`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-source)或[`--从远程主机读取=BINLOG-DUMP-GTIDS`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-master)结合[`--排除GTID`](mysqlbinlog.html#option_mysqlbinlog_exclude-gtids)，可以在源上过滤事务，避免不必要的网络流量。

    连接参数选项与这些选项或[`--从远程服务器读取`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-server)选项这些选项是[`--主人`](mysqlbinlog.html#option_mysqlbinlog_host), [`--密码`](mysqlbinlog.html#option_mysqlbinlog_password), [`--港口`](mysqlbinlog.html#option_mysqlbinlog_port), [`--礼节`](mysqlbinlog.html#option_mysqlbinlog_protocol), [`--插座`](mysqlbinlog.html#option_mysqlbinlog_socket)和[`--使用者`](mysqlbinlog.html#option_mysqlbinlog_user)。如果未指定任何远程选项，则忽略连接参数选项。

    这个[`复制从机`](privileges-provided.html#priv_replication-slave)使用这些选项需要特权。

-   [](<>) [`--从远程主机读取=*`类型`*`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-master)

    [](<>)[](<>)

    在MySQL 8.0.26之前使用此选项，而不是[`--从远程源读取`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-source).两个选项的效果相同。

-   [](<>) [`--从远程服务器读取`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-server), `-R`

    [](<>)[](<>)

    从MySQL服务器读取二进制日志，而不是读取本地日志文件。此选项要求远程服务器正在运行。它只适用于远程服务器上的二进制日志文件，不适用于中继日志文件。

    连接参数选项与此选项或[`--从远程主机读取`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-master)选项这些选项是[`--主人`](mysqlbinlog.html#option_mysqlbinlog_host), [`--密码`](mysqlbinlog.html#option_mysqlbinlog_password), [`--港口`](mysqlbinlog.html#option_mysqlbinlog_port), [`--礼节`](mysqlbinlog.html#option_mysqlbinlog_protocol), [`--插座`](mysqlbinlog.html#option_mysqlbinlog_socket)和[`--使用者`](mysqlbinlog.html#option_mysqlbinlog_user)。如果未指定任何远程选项，则忽略连接参数选项。

    这个[`复制从机`](privileges-provided.html#priv_replication-slave)使用此选项需要特权。

    这个选项就像[`--从远程主机读取=BINLOG-DUMP-NON-GTIDS`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-master).

-   [](<>) [`--结果文件=*`名称`*`](mysqlbinlog.html#option_mysqlbinlog_result-file), `-r*`名称`*`

    [](<>)[](<>)

    没有[`--生的`](mysqlbinlog.html#option_mysqlbinlog_raw)选项，此选项指示要访问的文件[**mysqlbinlog**](mysqlbinlog.html)写入文本输出。具有[`--生的`](mysqlbinlog.html#option_mysqlbinlog_raw), [**mysqlbinlog**](mysqlbinlog.html)为从服务器传输的每个日志文件写入一个二进制输出文件，默认情况下，使用与原始日志文件相同的名称将其写入当前目录。在这种情况下[`--结果文件`](mysqlbinlog.html#option_mysqlbinlog_result-file)选项值被视为修改输出文件名的前缀。

-   [](<>) [`--需要行格式`](mysqlbinlog.html#option_mysqlbinlog_require-row-format)

    [](<>)[](<>)

    事件需要基于行的二进制日志记录格式。此选项强制执行基于行的复制事件[**mysqlbinlog**](mysqlbinlog.html)输出使用此选项生成的事件流将被使用`需要行格式`选择[`将复制源更改为`](change-replication-source-to.html)语句（来自MySQL 8.0.23）或[`将主机更改为`](change-master-to.html)语句（MySQL 8.0.23之前）。[`binlog_格式=行`](replication-options-binary-log.html#sysvar_binlog_format)必须在写入二进制日志的服务器上设置。指定此选项时，[**mysqlbinlog**](mysqlbinlog.html)如果遇到根据`需要行格式`限制，包括`加载数据填充`说明，创建或删除临时表，`INTVAR`, `兰德`或`用户变量`事件，以及DML事务中的非基于行的事件。[**mysqlbinlog**](mysqlbinlog.html)还打印了一个`设置@会话。需要行格式`语句，以在执行输出时应用限制，并且不打印`设置@会话。伪线程id`陈述

    这个选项是在MySQL 8.0.19中添加的。

-   [](<>) [`--重写数据库*`从你的名字`*->*`直呼其名`*'`](mysqlbinlog.html#option_mysqlbinlog_rewrite-db)

    [](<>)[](<>)

    从基于行或基于语句的日志中读取时，重写*`从你的名字`*到*`直呼其名`*.对行、基于行的日志以及[`使用`](use.html)子句，用于基于语句的日志。

    警告

    使用此选项时，表名与数据库名限定的语句不会重写为使用新名称。

    用作此选项值的重写规则是一个具有以下格式的字符串`'*`从你的名字`*->*`直呼其名`*'`，如前所示，因此必须用引号括起来。

    要使用多个重写规则，请多次指定该选项，如下所示：

    ```
    mysqlbinlog --rewrite-db='dbcurrent->dbold' --rewrite-db='dbtest->dbcurrent' \
        binlog.00001 > /tmp/statements.sql
    ```

    当与[`--数据库`](mysqlbinlog.html#option_mysqlbinlog_database)选择权`--重写数据库`优先选择权；然后`--数据库`选项，使用重写的数据库名称。提供选项的顺序在这方面没有区别。

    这意味着，例如[**mysqlbinlog**](mysqlbinlog.html)是从`--重写db='mydb->yourdb'--database=yourdb`，然后对数据库中的任何表进行所有更新`mydb`和`yourdb`都包含在输出中。另一方面，如果是从`--重写db='mydb->yourdb'--database=mydb`然后[**mysqlbinlog**](mysqlbinlog.html)根本不输出任何语句：因为`mydb`首先被重写为`yourdb`在应用`--数据库`选项，则不存在匹配的更新`--数据库=mydb`.

-   [](<>) [`--服务器id=*`身份证件`*`](mysqlbinlog.html#option_mysqlbinlog_server-id)

    [](<>)[](<>)

    仅显示由具有给定服务器ID的服务器创建的事件。

-   [](<>) [`--服务器id位=*`N`*`](mysqlbinlog.html#option_mysqlbinlog_server-id-bits)

    [](<>)[](<>)

    只使用第一个*`N`*一点点[`服务器id`](replication-options.html#sysvar_server_id)来识别服务器。如果二进制日志是由[**mysqld**](mysqld.html)服务器id位设置为小于32，用户数据存储在最高有效位，运行[**mysqlbinlog**](mysqlbinlog.html)具有`--服务器id位`设置为32可以查看此数据。

    此选项仅受的版本支持[**mysqlbinlog**](mysqlbinlog.html)与NDB群集分发一起提供，或与NDB群集支持一起构建。

-   [](<>) [`--服务器公钥路径=*`文件名`*`](mysqlbinlog.html#option_mysqlbinlog_server-public-key-path)

    [](<>)[](<>)

    PEM格式文件的路径名，其中包含服务器基于RSA密钥对的密码交换所需的公钥的客户端副本。此选项适用于通过`shau密码`或`缓存_sha2_密码`身份验证插件。对于未使用这些插件之一进行身份验证的帐户，此选项将被忽略。如果不使用基于RSA的密码交换，它也会被忽略，就像客户端使用安全连接连接到服务器时一样。

    如果[`--服务器公钥路径=*`文件名`*`](mysqlbinlog.html#option_mysqlbinlog_server-public-key-path)给定并指定有效的公钥文件，它优先于[`--获取服务器公钥`](mysqlbinlog.html#option_mysqlbinlog_get-server-public-key).

    对于`shau密码`，此选项仅适用于使用OpenSSL构建MySQL的情况。

    有关`shau密码`和`缓存_sha2_密码`插件，参见[第6.4.1.3节，“SHA-256可插拔认证”](sha256-pluggable-authentication.html)和[第6.4.1.2节，“缓存SHA-2可插拔身份验证”](caching-sha2-pluggable-authentication.html).

-   [](<>) [`--集字符集=*`charset\_名称`*`](mysqlbinlog.html#option_mysqlbinlog_set-charset)

    [](<>)[](<>)

    添加一个[`定名*`charset\_名称`*`](set-names.html)语句，以指定用于处理日志文件的字符集。

-   [](<>) [`--共享内存基名称=*`名称`*`](mysqlbinlog.html#option_mysqlbinlog_shared-memory-base-name)

    [](<>)[](<>)

    在Windows上，用于使用共享内存连接到本地服务器的共享内存名称。默认值为`MYSQL`。共享内存名称区分大小写。

    此选项仅在服务器启动时适用[`共享内存`](server-system-variables.html#sysvar_shared_memory)系统变量已启用，以支持共享内存连接。

-   [](<>) [`--缩写形式`](mysqlbinlog.html#option_mysqlbinlog_short-form), `-s`

    [](<>)[](<>)

    只显示日志中包含的语句，不显示任何额外信息或基于行的事件。这仅用于测试，不应在生产系统中使用。它已被弃用，您应该期望它在未来的版本中被删除。

-   [](<>) [`--跳过GTID[=（真|假）]`](mysqlbinlog.html#option_mysqlbinlog_skip-gtids)

    [](<>)[](<>)

    不要在输出转储文件中包含二进制日志文件中的GTID。例如：

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

    通常情况下，您不应该在生产或恢复中使用此选项，除非在特定且罕见的情况下，GTID是不需要的。例如，管理员可能希望将选定的事务（例如表定义）从一个部署复制到另一个不相关的部署，而该部署不会复制到原始部署或从原始部署复制。在这种情况下，[`--跳过GTID`](mysqlbinlog.html#option_mysqlbinlog_skip-gtids)可用于使管理员能够像应用新事务一样应用事务，并确保部署保持无关。但是，只有当包含GTID导致用例出现已知问题时，才应该使用此选项。

-   [](<>) [`--插座=*`路径`*`](mysqlbinlog.html#option_mysqlbinlog_socket), `-S*`路径`*`

    [](<>)[](<>)

    连接到`本地服务器`，要使用的Unix套接字文件，或在Windows上，要使用的命名管道的名称。

    在Windows上，此选项仅适用于使用[`命名为_管道`](server-system-variables.html#sysvar_named_pipe)启用系统变量以支持命名管道连接。此外，建立连接的用户必须是由指定的Windows组的成员[`命名为_管道_完全访问_组`](server-system-variables.html#sysvar_named_pipe_full_access_group)系统变量。

-   [](<>) `--ssl*`

    [](<>)[](<>)

    开始的选项`--ssl`指定是否使用加密连接到服务器，并指示在何处查找SSL密钥和证书。看见[用于加密连接的命令选项](connection-options.html#encrypted-connection-options).

-   [](<>) [`--ssl fips模式={OFF | ON | STRICT}`](mysqlbinlog.html#option_mysqlbinlog_ssl-fips-mode)

    [](<>)[](<>)

    控制是否在客户端启用FIPS模式。这个[`--ssl fips模式`](mysqlbinlog.html#option_mysqlbinlog_ssl-fips-mode)选项不同于其他选项`--ssl-*`xxx`*`选项，它不用于建立加密连接，而是影响允许的加密操作。看见[第6.8节，“FIPS支持”](fips-mode.html).

    这些[`--ssl fips模式`](mysqlbinlog.html#option_mysqlbinlog_ssl-fips-mode)允许使用以下值：

    -   `关`：禁用FIPS模式。

    -   `在…上`：启用FIPS模式。

    -   `严格的`：启用“严格”FIPS模式。

    笔记

    如果OpenSSL FIPS对象模块不可用，则[`--ssl fips模式`](mysqlbinlog.html#option_mysqlbinlog_ssl-fips-mode)是`关`.在这种情况下，设置[`--ssl fips模式`](mysqlbinlog.html#option_mysqlbinlog_ssl-fips-mode)到`在…上`或`严格的`使客户端在启动时产生警告，并在非FIPS模式下运行。

-   [](<>) [`--开始日期时间=*`约会时间`*`](mysqlbinlog.html#option_mysqlbinlog_start-datetime)

    [](<>)[](<>)

    在第一个时间戳等于或晚于*`约会时间`*论点这个*`约会时间`*值是相对于您运行的计算机上的本地时区的[**mysqlbinlog**](mysqlbinlog.html)。该值应采用可接受的格式[`约会时间`](datetime.html)或[`时间戳`](datetime.html)数据类型。例如：

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

    此选项对于时间点恢复非常有用。看见[第7.5节，“时间点（增量）恢复”](point-in-time-recovery.html).

-   [](<>) [`--起始位置=*`N`*`](mysqlbinlog.html#option_mysqlbinlog_start-position), `-j*`N`*`

    [](<>)[](<>)

    在日志位置开始解码二进制日志*`N`*，在输出中包括从位置开始的任何事件*`N`*或者之后。位置是日志文件中的字节点，而不是事件计数器；它需要指向事件的起始位置以生成有用的输出。此选项适用于命令行上命名的第一个日志文件。

    此选项对于时间点恢复非常有用。看见[第7.5节，“时间点（增量）恢复”](point-in-time-recovery.html).

-   [](<>) [`--停止约会时间=*`约会时间`*`](mysqlbinlog.html#option_mysqlbinlog_stop-datetime)

    [](<>)[](<>)

    在第一个时间戳等于或晚于*`约会时间`*论点请参见对[`--开始日期时间`](mysqlbinlog.html#option_mysqlbinlog_start-datetime)选项以获取有关*`约会时间`*价值

    此选项对于时间点恢复非常有用。看见[第7.5节，“时间点（增量）恢复”](point-in-time-recovery.html).

-   [](<>) [`--永不停止`](mysqlbinlog.html#option_mysqlbinlog_stop-never)

    [](<>)[](<>)

    此选项用于[`--从远程服务器读取`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-server).它告诉我们[**mysqlbinlog**](mysqlbinlog.html)保持与服务器的连接。否则[**mysqlbinlog**](mysqlbinlog.html)从服务器传输最后一个日志文件时退出。[`--永不停止`](mysqlbinlog.html#option_mysqlbinlog_stop-never)暗示[`--最后一次记录`](mysqlbinlog.html#option_mysqlbinlog_to-last-log)，因此只需在命令行上命名要传输的第一个日志文件。

    [`--永不停止`](mysqlbinlog.html#option_mysqlbinlog_stop-never)常用于[`--生的`](mysqlbinlog.html#option_mysqlbinlog_raw)进行实时二进制日志备份，但也可以不用[`--生的`](mysqlbinlog.html#option_mysqlbinlog_raw)在服务器生成日志事件时保持日志事件的连续文本显示。

    具有[`--永不停止`](mysqlbinlog.html#option_mysqlbinlog_stop-never)默认情况下，[**mysqlbinlog**](mysqlbinlog.html)连接到服务器时报告服务器ID为1。使用[`--连接服务器id`](mysqlbinlog.html#option_mysqlbinlog_connection-server-id)显式指定要报告的替代ID。它可用于避免与副本服务器或其他服务器的ID冲突[**mysqlbinlog**](mysqlbinlog.html)过程看见[第4.6.9.4节，“指定mysqlbinlog服务器ID”](mysqlbinlog-server-id.html).

-   [](<>) [`--永不停止从服务器id=*`身份证件`*`](mysqlbinlog.html#option_mysqlbinlog_stop-never-slave-server-id)

    [](<>)[](<>)

    此选项已被弃用；预计它将在未来的版本中删除。使用[`--连接服务器id`](mysqlbinlog.html#option_mysqlbinlog_connection-server-id)选项指定的服务器ID[**mysqlbinlog**](mysqlbinlog.html)报告。

-   [](<>) [`--停止位置=*`N`*`](mysqlbinlog.html#option_mysqlbinlog_stop-position)

    [](<>)[](<>)

    停止在日志位置解码二进制日志*`N`*，从输出中排除从位置开始的任何事件*`N`*或者之后。位置是日志文件中的字节点，而不是事件计数器；它需要指向要包含在输出中的最后一个事件的起始位置之后的一个点。事件在位置之前开始*`N`*在该位置或之后完成是最后一个要处理的事件。此选项适用于命令行上命名的最后一个日志文件。

    此选项对于时间点恢复非常有用。看见[第7.5节，“时间点（增量）恢复”](point-in-time-recovery.html).

-   [](<>) [`--tls密码套件=*`密码套件清单`*`](mysqlbinlog.html#option_mysqlbinlog_tls-ciphersuites)

    [](<>)[](<>)

    使用TLSv1的加密连接允许使用的密码套件。3.该值是一个或多个以冒号分隔的密码套件名称的列表。可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。有关详细信息，请参阅[第6.3.2节，“加密连接TLS协议和密码”](encrypted-connection-protocols-ciphers.html).

    这个选项是在MySQL 8.0.16中添加的。

-   [](<>) [`--tls版本=*`协议清单`*`](mysqlbinlog.html#option_mysqlbinlog_tls-version)

    [](<>)[](<>)

    加密连接允许的TLS协议。该值是一个或多个以逗号分隔的协议名称的列表。可以为此选项命名的协议取决于用于编译MySQL的SSL库。有关详细信息，请参阅[第6.3.2节，“加密连接TLS协议和密码”](encrypted-connection-protocols-ciphers.html).

-   [](<>) [`--最后一次记录`](mysqlbinlog.html#option_mysqlbinlog_to-last-log), `-t`

    [](<>)[](<>)

    不要在MySQL服务器请求的二进制日志结束时停止，而是继续打印，直到最后一个二进制日志结束。如果将输出发送到同一台MySQL服务器，可能会导致无休止的循环。这个选项需要[`--从远程服务器读取`](mysqlbinlog.html#option_mysqlbinlog_read-from-remote-server).

-   [](<>) [`--使用者=*`用户名`*`](mysqlbinlog.html#option_mysqlbinlog_user), `-u*`用户名`*`

    [](<>)[](<>)

    连接到远程服务器时要使用的MySQL帐户的用户名。

-   [](<>) [`--冗长的`](mysqlbinlog.html#option_mysqlbinlog_verbose), `-五`

    [](<>)[](<>)

    重建行事件，并将其显示为注释的SQL语句，在适当的情况下包含表分区信息。如果该选项被赋予两次（通过传递“-vv”或“-verbose--verbose”），那么输出将包括注释，以指示列数据类型和一些元数据，以及信息性日志事件，如[`binlog\u行\u查询\u日志\u事件`](replication-options-binary-log.html#sysvar_binlog_rows_query_log_events)系统变量设置为`符合事实的`.

    例如，显示[`--base64输出`](mysqlbinlog.html#option_mysqlbinlog_base64-output)和[`--冗长的`](mysqlbinlog.html#option_mysqlbinlog_verbose)关于行事件输出，请参阅[第4.6.9.2节，“mysqlbinlog行事件显示”](mysqlbinlog-row-events.html).

-   [](<>) [`--验证binlog校验和`](mysqlbinlog.html#option_mysqlbinlog_verify-binlog-checksum), `-c`

    [](<>)[](<>)

    验证二进制日志文件中的校验和。

-   [](<>) [`--版本`](mysqlbinlog.html#option_mysqlbinlog_version), `-五`

    [](<>)[](<>)

    显示版本信息并退出。

    这个[**mysqlbinlog**](mysqlbinlog.html)使用此选项时显示的版本号为3.4。

-   [](<>) [`--压缩级别=*`数量`*`](mysqlbinlog.html#option_mysqlbinlog_zstd-compression-level)

     [](<>)[](<>)

    用于连接到使用`zstd`压缩算法。允许的水平从1到22，较大的值表示压缩水平增加。默认值`zstd`压缩级别为3。压缩级别设置对不使用压缩级别的连接没有影响`zstd`压缩。

    有关更多信息，请参阅[第4.2.8节，“连接压缩控制”](connection-compression-control.html).

    这个选项是在MySQL 8.0.18中添加的。

    你可以通过管道输送[**mysqlbinlog**](mysqlbinlog.html)进入[**mysql**](mysql.html)客户端执行二进制日志中包含的事件。此技术用于在有旧备份时从意外退出中恢复（请参阅[第7.5节，“时间点（增量）恢复”](point-in-time-recovery.html)).例如：


```
mysqlbinlog binlog.000001 | mysql -u root -p
```

或者：

```
mysqlbinlog binlog.[0-9]* | mysql -u root -p
```

如果[**mysqlbinlog**](mysqlbinlog.html)可能包含[`斑点`](blob.html)这些值可能会在以下情况下导致问题：[**mysql**](mysql.html)处理它们。在本例中，调用[**mysql**](mysql.html)和[`--二进制模式`](mysql-command-options.html#option_mysql_binary-mode)选项

还可以重定向的输出[**mysqlbinlog**](mysqlbinlog.html)如果需要先修改语句日志（例如，删除由于某种原因不想执行的语句），则可以将其转换为文本文件。编辑文件后，通过将其用作[**mysql**](mysql.html)节目：

```
mysqlbinlog binlog.000001 > tmpfile
... edit tmpfile ...
mysql -u root -p < tmpfile
```

什么时候[**mysqlbinlog**](mysqlbinlog.html)用[`--起始位置`](mysqlbinlog.html#option_mysqlbinlog_start-position)选项，它仅显示二进制日志中偏移量大于或等于给定位置的事件（给定位置必须与一个事件的开始匹配）。当它看到具有给定日期和时间的事件时，还可以选择停止和启动。这使您能够使用[`--停止约会时间`](mysqlbinlog.html#option_mysqlbinlog_stop-datetime)选项（例如，能够说，“将我的数据库向前滚动到今天上午10:30的状态”）。

**处理多个文件。**如果要在MySQL服务器上执行多个二进制日志，安全的方法是使用与服务器的单个连接来处理所有日志。下面是一个例子，展示了可能的情况*不安全的*:

```
mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!!
mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!!
```

如果第一个日志文件包含[`创建临时表`](create-table.html)语句，第二个日志包含使用临时表的语句。第一次[**mysql**](mysql.html)进程终止时，服务器会删除临时表。第二次[**mysql**](mysql.html)进程尝试使用该表，服务器报告“未知表”

要避免这样的问题，请使用*仅有一个的* [**mysql**](mysql.html)process以执行要处理的所有二进制日志的内容。以下是一种方法：

```
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"
```

在MySQL 8.0.12中，您还可以向用户提供多个二进制日志文件[**mysqlbinlog**](mysqlbinlog.html)作为使用壳管的流式输入。压缩二进制日志文件的存档可以解压缩并直接提供给[**mysqlbinlog**](mysqlbinlog.html).在这个例子中，`binlog-files_1。广州`包含多个用于处理的二进制日志文件。管道提取`binlog-files_1。广州`，将二进制日志文件传输到[**mysqlbinlog**](mysqlbinlog.html)作为标准输入，并通过管道输出[**mysqlbinlog**](mysqlbinlog.html)进入[**mysql**](mysql.html)执行委托人：

```
gzip -cd binlog-files_1.gz | ./mysqlbinlog - | ./mysql -uroot  -p
```

可以指定多个存档文件，例如：

```
gzip -cd binlog-files_1.gz binlog-files_2.gz | ./mysqlbinlog - | ./mysql -uroot  -p
```

对于流式输入，不要使用`--停止位置`因为[**mysqlbinlog**](mysqlbinlog.html)无法识别应用此选项的最后一个日志文件。

**加载数据操作。**  [**mysqlbinlog**](mysqlbinlog.html)可以产生能够复制[`加载数据`](load-data.html)没有原始数据文件的操作。[**mysqlbinlog**](mysqlbinlog.html)将数据复制到临时文件并写入[`本地加载数据`](load-data.html)引用该文件的语句。写入这些文件的目录的默认位置是特定于系统的。要显式指定目录，请使用[`--局部负荷`](mysqlbinlog.html#option_mysqlbinlog_local-load)选项

因为[**mysqlbinlog**](mysqlbinlog.html)皈依者[`加载数据`](load-data.html)对……的陈述[`本地加载数据`](load-data.html)声明（也就是说，它添加了`地方的`)，用于处理语句的客户端和服务器都必须配置`地方的`已启用功能。看见[第6.1.6节，“本地负载数据的安全注意事项”](load-data-local-security.html).

警告

为创建的临时文件[`本地加载数据`](load-data.html)声明是*不*自动删除，因为在您实际执行这些语句之前需要它们。在不再需要语句日志后，您应该自己删除临时文件。这些文件可以在临时文件目录中找到，其名称如下*`原始文件名-#-#`*.
