10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 36.3 mb
PDF (A4)- 36.3 mb
手册页(TGZ)- 236.9 kb
手册页(邮政编码)- 348.5 kb
信息(Gzip)- 3.4 mb
信息(邮政编码)- 3.4 mb
本手册节选

MySQL 5.7参考手册/.../ mysqlbinlog -处理二进制日志文件的实用程序

4.6.7 mysqlbinlog -二进制日志文件处理工具

服务器的二进制日志由以下文件组成事件描述对数据库内容的修改。服务器以二进制格式写入这些文件。要以文本格式显示它们的内容,请使用mysqlbinlog实用程序。你也可以用mysqlbinlog显示复制服务器在复制设置中写入的中继日志文件的内容,因为中继日志具有与二进制日志相同的格式。二进制日志和中继日志将在后面进一步讨论第5.4.4节“二进制日志”,第16.2.4节“中继日志和复制元数据存储库”

调用mysqlbinlog是这样的:

mysqlbinlog [选项log_file...

例如,显示二进制日志文件的内容binlog.000003,使用该命令:

mysqlbinlog binlog.0000003

中包含的事件binlog.000003。对于基于语句的日志记录,事件信息包括SQL语句、执行该语句的服务器ID、执行该语句的时间戳、执行该语句花费的时间等等。对于基于行的日志记录,事件指示行更改而不是SQL语句。看到第16.2.1节“复制格式”,以获取有关日志记录模式的信息。

事件之前有提供额外信息的头注释。例如:

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

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

第二行以日期和时间开始,指示语句在事件产生的服务器上开始的时间。对于复制,这个时间戳被传播到复制服务器。服务器idserver_id事件产生的服务器的值。end_log_pos指示下一个事件开始的位置(也就是说,它是当前事件+ 1的结束位置)。thread_id指示执行事件的线程。exec_time在源服务器上执行事件所花费的时间。在副本上,它是副本上的结束执行时间减去源上的开始执行时间之差。这一差异可以作为复制滞后于源的程度的指示器。error_code事件执行的结果。零表示没有发生错误。

请注意

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

的输出mysqlbinlog可以重新执行(例如,通过使用它作为mysql)重做日志中的语句。这对于意外服务器退出后的恢复操作非常有用。有关其他用法示例,请参阅本节后面的讨论第7.5节,“时间点(增量)恢复”

通常情况下,您使用mysqlbinlog直接读取二进制日志文件,并将其应用到本地MySQL服务器。方法还可以从远程服务器读取二进制日志——read-from-remote-server选择。要读取远程二进制日志,可以给出连接参数选项来指示如何连接到服务器。这些选项——主机——密码——港口——协议——套接字,——用户

运行时mysqlbinlog对于一个大的二进制日志,要注意文件系统是否有足够的空间来存放生成的文件。配置目录mysqlbinlog用于临时文件,请使用TMPDIR环境变量。

mysqlbinlog的值。pseudo_slave_mode在执行任何SQL语句之前设置为true。这个系统变量影响XA事务的处理。

mysqlbinlog支持以下选项,这些选项可以在命令行或(mysqlbinlog)而且(客户端)选项文件的分组。有关MySQL程序使用的选项文件的信息,请参见第4.2.2.2节“使用选项文件”

表4.22 mysqlbinlog选项

选项名称 描述 介绍了 弃用
——base64-output 使用base-64编码打印二进制日志条目
——bind-address 使用指定的网络接口连接MySQL服务器
——binlog-row-event-max-size 二进制日志最大事件大小
——character-sets-dir 字符集的安装目录
——connection-server-id 用于测试和调试。有关适用的默认值和其他细节,请参阅文本
——数据库 仅列出此数据库的条目
——调试 编写调试日志
——debug-check 当程序退出时打印调试信息
——debug-info 当程序退出时打印调试信息、内存和CPU统计信息
——default-auth 要使用的身份验证插件
——defaults-extra-file 除了通常的选项文件外,还读取指定的选项文件
——defaults-file 只读命名选项文件
——defaults-group-suffix 选项组后缀值
——disable-log-bin 禁用二进制日志
——exclude-gtids 不显示提供的GTID集合中的任何组吗
——force-if-open 读取二进制日志文件,即使打开或未正确关闭
——force-read 如果mysqlbinlog读取它无法识别的二进制日志事件,它将打印一个警告
——get-server-public-key 从服务器请求RSA公钥 5.7.23
——帮助 显示帮助信息并退出
——hexdump 在注释中显示日志的十六进制转储
——主机 MySQL服务器所在的主机
——幂等 导致服务器在处理此会话的二进制日志更新时使用幂等模式
——include-gtids 只显示提供的GTID集合中的组
——局部负荷 为指定目录中的LOAD DATA准备本地临时文件
——登录路径 从.mylogin.cnf读取登录路径选项
——已 读取无选项文件
——抵消 跳过日志中的前N个条目
open_files_limit 指定要保留的打开文件描述符的数量
——密码 连接到服务器时使用的密码
——plugin-dir 安装插件的目录
——港口 TCP/IP连接端口号
——print-defaults 打印默认选项
——协议 要使用的传输协议
——生 将事件以原始(二进制)格式写入输出文件
——read-from-remote-master 从MySQL复制源服务器读取二进制日志,而不是读取本地日志文件
——read-from-remote-server 从MySQL服务器读取二进制日志,而不是本地日志文件
——结果文件 直接输出到指定文件
——rewrite-db 在回放以基于行格式写入的日志时,为数据库创建重写规则。可以多次使用吗
——secure-auth 不以旧的(4.1之前的)格式发送密码到服务器 是的
——服务器id 只提取由具有给定服务器ID的服务器创建的事件
——server-id-bits 告诉mysqlbinlog如何解释二进制日志中的服务器id,当日志被一个mysqld有它的server-id-bits设置为小于最大值时;仅MySQL集群版本的mysqlbinlog支持
——server-public-key-path 包含RSA公钥文件的路径名称 5.7.23
——set-charset 在输出中添加SET NAMES charset_name语句
——shared-memory-base-name 共享内存连接的共享内存名称(仅限Windows)
——短小精悍 只显示日志中包含的语句
——skip-gtids 不要打印任何gtid;在从包含gtid的二进制日志写入转储文件时使用此方法
——套接字 Unix套接字文件或Windows命名管道使用
——ssl 使连接加密
——ssl-ca 包含受信任的SSL证书颁发机构列表的文件
——ssl-capath 包含受信任的SSL证书颁发机构证书文件的目录
——ssl-cert 包含X.509证书的文件
——ssl cipher 用于连接加密的允许密码
——ssl-crl 包含证书撤销列表的文件
——ssl-crlpath 包含证书撤销列表文件的目录
——ssl密钥 包含X.509密钥的文件
——ssl-mode 到服务器的连接所需的安全状态 5.7.11
——ssl-verify-server-cert 根据服务器证书验证主机名
——start-datetime 从第一个事件读取二进制日志,时间戳等于或晚于datetime参数
——起始位置 从位置等于或大于参数的第一个事件解码二进制日志
——stop-datetime 在时间戳等于或大于datetime参数的第一个事件时停止读取二进制日志
——stop-never 读取最后一个二进制日志文件后,保持与服务器的连接
——stop-never-slave-server-id 连接到服务器时要报告的从服务器ID
——停止位置 在位置等于或大于参数的第一个事件时停止解码二进制日志
——tls版本 加密连接允许的TLS协议 5.7.10
——to-last-log 不停止从MySQL服务器请求二进制日志的结束,而是继续打印到最后一个二进制日志的结束
——用户 连接到服务器时使用的MySQL用户名
——详细 将行事件重构为SQL语句
——verify-binlog-checksum 验证二进制日志中的校验和
——版本 显示版本信息并退出

的输出可以通过管道传输mysqlbinlogmysql客户端执行二进制日志中包含的事件。当您有一个旧的备份(参见第7.5节,“时间点(增量)恢复”).例如:

mysqlbinlog binlog。000001 | mysql -u root -p

或者:

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

如果所产生的语句mysqlbinlog可能包含价值观,这些可能会导致问题mysql流程。在本例中,调用mysql——二进制模式选择。

的输出也可以重定向mysqlbinlog如果您需要先修改语句日志(例如,删除由于某种原因不想执行的语句),则改为文本文件。类的输入,执行其中包含的语句mysql计划:

mysqlbinlog binlog。000001 > tmpfile…编辑临时文件...Mysql -u root -p < tmpfile

mysqlbinlog的方法调用——起始位置选项,它只显示二进制日志中偏移量大于或等于给定位置(给定位置必须匹配一个事件的开始)的事件。它还具有在看到具有给定日期和时间的事件时停止和启动的选项。方法执行时间点恢复——stop-datetime选项(能够说,例如,前滚我的数据库到今天上午十点半的状态。).

如果在MySQL服务器上有多个二进制日志要执行,安全的方法是使用到服务器的单个连接来处理它们。这里有一个例子来说明可能的情况不安全的

mysqlbinlog binlog。000001 | mysql -u root -p #危险!mysqlbinlog binlog。000002 | mysql -u root -p #危险!!

如果第一个日志文件包含一个创建临时表语句,第二个日志包含一条使用临时表的语句。当第一个mysql进程终止,服务器丢弃临时表。当第二个mysql进程试图使用表时,服务器会报告未知的表。

要避免这类问题,请使用mysql进程执行要处理的所有二进制日志的内容。下面是一种方法:

mysqlbinlog binlog。000001 binlog。000002 | mysql -u root -p

另一种方法是将所有日志写入一个文件,然后处理该文件:

mysqlbinlog binlog。000001 > / tmp /语句。sql mysqlbinlog binlog。000002 > > / tmp /语句。SQL mysql -u root -p -e "source /tmp/statements.sql"

mysqlbinlog可以产生输出,复制一个加载数据没有原始数据文件的操作。mysqlbinlog将数据复制到临时文件并写入数据加载本地引用该文件的语句。写入这些文件的目录的默认位置是特定于系统的。要显式指定目录,请使用——局部负荷选择。

因为mysqlbinlog转换加载数据语句数据加载本地声明(也就是说,它添加当地的),则用于处理语句的客户端和服务器都必须配置当地的功能启用。看到第6.1.6节“LOAD DATA LOCAL的安全考虑”

警告

创建的临时文件数据加载本地语句是自动删除,因为在实际执行这些语句之前,它们是必需的。在不再需要语句日志之后,您应该自己删除这些临时文件。这些文件可以在临时文件目录中找到,其名称如original_file_name - # #