服务器的二进制日志由以下文件组成”事件”描述对数据库内容的修改。服务器以二进制格式写入这些文件。要以文本格式显示它们的内容,请使用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
在第一行,后面的数字在
指示事件在二进制日志文件中的文件偏移量或起始位置。
第二行以日期和时间开始,指示语句在事件产生的服务器上开始的时间。对于复制,这个时间戳被传播到复制服务器。服务器id
是server_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 | 验证二进制日志中的校验和 | ||
——版本 | 显示版本信息并退出 |
——帮助
,-?
显示帮助消息并退出。
此选项确定何时将事件编码为base-64字符串
BINLOG
语句。该选项有以下允许值(不区分大小写):汽车
(“自动”)或UNSPEC
(“不明”)显示BINLOG
语句在必要时自动执行(也就是说,对于格式描述事件和行事件)。如果没有——base64-output
选项,其效果与——base64-output =汽车
。请注意自动
BINLOG
的输出,显示是惟一安全的行为mysqlbinlog重新执行二进制日志文件内容。其他选项值仅用于调试或测试目的,因为它们可能产生不以可执行形式包含所有事件的输出。从来没有
原因BINLOG
语句不显示。mysqlbinlog如果发现必须使用显示的行事件,则退出并出现错误BINLOG
。DECODE-ROWS
指定到mysqlbinlog,以便将行事件解码并显示为注释的SQL语句——详细
选择。就像从来没有
,DECODE-ROWS
抑制的BINLOG
语句,但与从来没有
,如果发现行事件,则不退出并显示错误。
举个例子来说明
——base64-output
而且——详细
关于行事件输出,请参见“mysqlbinlog行事件显示”。在具有多个网络接口的计算机上,使用此选项选择使用哪个接口连接到MySQL服务器。
——binlog-row-event-max-size =
N
命令行格式 ——binlog-row-event-max-size = #
类型 数字 默认值 4294967040
最小值 256
最大值 18446744073709547520
指定基于行的二进制日志事件的最大大小(以字节为单位)。如果可能,将行分组为小于此大小的事件。取值为256的整数倍。默认为4GB。
——character-sets-dir =
dir_name
字符集的安装目录。看到第10.15节“字符集配置”。
——connection-server-id =
server_id
该选项用于测试MySQL服务器是否支持
BINLOG_DUMP_NON_BLOCK
连接标志。正常操作不需要。该选项的有效默认值和最小值取决于是否mysqlbinlog以阻塞模式或非阻塞模式运行。当mysqlbinlog在阻塞模式下运行,默认值(和最小值)为1;在非阻塞模式下运行时,默认值(和最小值)为0。
——数据库=
,db_name
- d
db_name
这个选项会导致mysqlbinlog从二进制日志(仅本地日志)中输出时发生的条目
db_name
被选择为默认数据库使用
。的
——数据库
选择mysqlbinlog类似于——binlog-do-db
选择mysqld,但只能用于指定一个数据库。如果——数据库
给出多次,只使用最后一个实例。该选项的效果取决于使用的是基于语句的日志记录格式还是基于行的日志记录格式,其效果与
——binlog-do-db
取决于使用的是基于语句的日志记录还是基于行的日志记录。Statement-based日志记录。的
——数据库
Option的工作原理如下:假设二进制日志是通过使用基于语句的日志来创建的:
插入测试。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——数据库=测试不输出前两个吗
插入
语句,因为没有默认数据库。它输出三个插入
语句后使用测试
但没有三个插入
语句后使用db2
。mysqlbinlog——db2数据库=不输出前两个吗
插入
语句,因为没有默认数据库。它不输出这三个插入
语句后使用测试
,但输出三个插入
语句后使用db2
。基于行的日志记录。mysqlbinlog只输出更改属于的表的项
db_name
。默认数据库对此没有影响。假设刚才描述的二进制日志是使用基于行的日志而不是基于语句的日志创建的。mysqlbinlog——数据库=测试只输出修改的条目t1
在测试数据库中,无论是否使用
或默认数据库是什么。如果服务器正在运行
binlog_format
设置为混合
你希望它是可以使用的mysqlbinlog与——数据库
选项,则必须确保被修改的表位于所选择的数据库中使用
。(特别是,不应该使用跨数据库更新。)与the一起使用时
——rewrite-db
选项时,——rewrite-db
选项首先应用;然后——数据库
选项,使用重写的数据库名称。在这方面,提供选项的顺序没有区别。——调试(=
,debug_options
]- # (
debug_options
]编写调试日志。一个典型的
debug_options
字符串是d:师:啊,
。默认值是file_name
d:师:啊,/ tmp / mysqlbinlog.trace
。此选项仅在MySQL使用
WITH_DEBUG
。Oracle提供的MySQL版本二进制文件是不使用此选项构建。当程序退出时打印一些调试信息。
此选项仅在MySQL使用
WITH_DEBUG
。Oracle提供的MySQL版本二进制文件是不使用此选项构建。当程序退出时打印调试信息以及内存和CPU使用统计信息。
此选项仅在MySQL使用
WITH_DEBUG
。Oracle提供的MySQL版本二进制文件是不使用此选项构建。关于使用哪个客户端身份验证插件的提示。看到第6.2.13节,“可插入认证”。
——defaults-extra-file =
file_name
读取该选项文件在全局选项文件之后,但(在Unix上)在用户选项文件之前。如果该文件不存在或无法访问,则会发生错误。如果
file_name
不是绝对路径名,它是相对于当前目录解释的。有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节,“影响选项文件处理的命令行选项”。
只使用给定的选项文件。如果该文件不存在或无法访问,则会发生错误。如果
file_name
不是绝对路径名,它是相对于当前目录解释的。例外:即使
——defaults-file
,读取客户端程序.mylogin.cnf
。有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节,“影响选项文件处理的命令行选项”。
不仅要读通常的选项组,还要读具有通常名称和后缀的组
str
。例如,mysqlbinlog正常读取(客户端)
而且(mysqlbinlog)
组。如果该选项为——defaults-group-suffix = _other
,mysqlbinlog还读(client_other)
而且(mysqlbinlog_other)
组。有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节,“影响选项文件处理的命令行选项”。
禁用二进制日志。方法时,这有助于避免无休止的循环
——to-last-log
选项,并将输出发送到相同的MySQL服务器。在意外退出后进行还原以避免记录的语句重复时,此选项也很有用。这个选项会导致mysqlbinlog包括
设置sql_log_bin = 0
语句中禁用剩余输出的二进制日志记录。控件的会话值sql_log_bin
系统变量是一个受限制的操作,因此该选项要求您拥有足够的权限来设置受限制的会话变量。看到第5.1.8.1节“系统变量特权”。中列出的组中不显示任何组
gtid_set
。——force-if-open
,- f
读取二进制日志文件,即使它们是打开的或没有正确关闭。
——force-read
,- f
有了这个选项,如果mysqlbinlog读取它无法识别的二进制日志事件,打印警告,忽略该事件,然后继续。没有这个选项,mysqlbinlog如果读取到这样的事件,则停止。
从服务器请求基于RSA密钥对的密码交换所需的公钥。该选项应用于使用
caching_sha2_password
身份验证插件。对于该插件,服务器不发送公钥,除非请求。对于不使用该插件进行身份验证的帐户,该选项将被忽略。如果不使用基于rsa的密码交换,它也会被忽略,就像客户机使用安全连接连接到服务器时的情况一样。如果
——server-public-key-path =
,并指定有效的公钥文件,它优先于file_name
——get-server-public-key
。有关
caching_sha2_password
插件,看到第6.4.1.4节“缓存SHA-2可插入认证”。的
——get-server-public-key
选项在MySQL 5.7.23中添加。——hexdump
,- h
在注释中显示日志的十六进制转储,如中所述mysqlbinlog十六进制转储格式。十六进制输出可以帮助复制调试。
——主机=
,host_name
- h
host_name
从给定主机上的MySQL服务器获取二进制日志。
告诉MySQL服务器在处理更新时使用幂等模式;这将抑制服务器在处理更新时在当前会话中遇到的任何重复键或未找到键的错误。当需要或需要向MySQL服务器重放一个或多个二进制日志时,这个选项可能很有用,因为MySQL服务器可能不包含日志引用的所有数据。
此选项的生效范围包括当前mysqlbinlog仅客户端和会话。
控件中列出的组
gtid_set
。——局部负荷=
,dir_name
- l
dir_name
对应的数据加载操作
加载数据
语句,mysqlbinlog从二进制日志事件中提取文件,将它们作为临时文件写入本地文件系统,然后写入数据加载本地
语句来加载文件。默认情况下,mysqlbinlog将这些临时文件写入特定于操作系统的目录。的——局部负荷
选项可用于显式指定目录mysqlbinlog应准备本地临时文件。重要的不会自动删除这些临时文件mysqlbinlog或任何其他MySQL程序。
控件中的命名登录路径中读取选项
.mylogin.cnf
登录路径文件。一个”登录路径”是一个选项组,其中包含指定要连接到哪个MySQL服务器以及要验证为哪个帐户的选项。创建或修改登录路径文件,请使用mysql_config_editor实用程序。看到章节4.6.6,“mysql_config_editor - MySQL配置实用程序”。有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节,“影响选项文件处理的命令行选项”。
不要读取任何选项文件。如果从选项文件中读取未知选项导致程序启动失败,
——已
可用于防止它们被读取。例外的是
.mylogin.cnf
如果文件存在,则在所有情况下都读取它。这允许以比命令行更安全的方式指定密码,即使在某些情况下——已
使用。创建.mylogin.cnf
,可以使用mysql_config_editor实用程序。看到章节4.6.6,“mysql_config_editor - MySQL配置实用程序”。有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节,“影响选项文件处理的命令行选项”。
——抵消=
,N
- o
N
跳过第一个
N
日志中的条目。指定要保留的打开文件描述符的数量。
——密码(=
,密码
]- p (
密码
]连接服务器时使用的MySQL帐户密码。“password”为可选参数。如果不是,mysqlbinlog提示。如果已知,就一定存在没有空间之间的
——密码=
或- p
还有后面的密码。如果没有指定密码选项,默认是不发送密码。在命令行上指定密码应该被认为是不安全的。为了避免在命令行上给出密码,请使用选项文件。看到第6.1.2.1节“密码保安最终用户指引”。
显式指定没有密码,并且mysqlbinlog不应提示一个,用
——skip-password
选择。查找插件的目录。的情况下指定此选项
——default-auth
选项用于指定身份验证插件,但是mysqlbinlog没有找到它。看到第6.2.13节,“可插入认证”。——港口=
,port_num
- p
port_num
用于连接到远程服务器的TCP/IP端口号。
打印程序名称和它从选项文件中获得的所有选项。
有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节,“影响选项文件处理的命令行选项”。
用于连接到服务器的传输协议。当其他连接参数通常导致使用的协议不是您想要的协议时,它很有用。具体的允许值请参见第4.2.5节,“连接传输协议”。
默认情况下,mysqlbinlog读取二进制日志文件,并以文本格式写入事件。的
——生
选项告诉mysqlbinlog把它们写成原始的二进制格式。它的使用要求——read-from-remote-server
还因为文件是从服务器请求的。mysqlbinlog为从服务器读取的每个文件写入一个输出文件。的——生
选项可用于对服务器的二进制日志进行备份。与——stop-never
选项,备份是”生活”因为mysqlbinlog保持与服务器的连接。默认情况下,输出文件被写入当前目录,其名称与原始日志文件相同。方法可以修改输出文件名——结果文件
选择。有关更多信息,请参见第4.6.7.3节“使用mysqlbinlog备份二进制日志文件”。方法从MySQL服务器读取二进制日志
COM_BINLOG_DUMP
或COM_BINLOG_DUMP_GTID
通过将选项值设置为either来命令BINLOG-DUMP-NON-GTIDS
或BINLOG-DUMP-GTIDS
,分别。如果——read-from-remote-master = BINLOG-DUMP-GTIDS
结合——exclude-gtids
,可以在源上过滤掉事务,避免不必要的网络流量。连接参数选项与此选项或
——read-from-remote-server
选择。这些选项——主机
,——密码
,——港口
,——协议
,——套接字
,——用户
。如果没有指定任何远程选项,则忽略连接参数选项。的
复制的奴隶
使用此选项需要特权。从MySQL服务器读取二进制日志,而不是读取本地日志文件。此选项要求远程服务器正在运行。它只适用于远程服务器上的二进制日志文件,而不适用于中继日志文件。
连接参数选项与此选项或
——read-from-remote-master
选择。这些选项——主机
,——密码
,——港口
,——协议
,——套接字
,——用户
。如果没有指定任何远程选项,则忽略连接参数选项。的
复制的奴隶
使用此选项需要特权。——结果文件=
,的名字
- r
的名字
没有
——生
选项,此选项指示要到的文件mysqlbinlog写文本输出。与——生
,mysqlbinlog为从服务器传输的每个日志文件写入一个二进制输出文件,默认情况下使用与原始日志文件相同的名称将它们写入当前目录。在这种情况下,——结果文件
选项值被视为修改输出文件名的前缀。——rewrite-db = '
from_name
->to_name
'从基于行或基于语句的日志中读取时,重写所有出现的
from_name
来to_name
。对于基于行的日志,重写是在行上完成的使用
子句,用于基于语句的日志。在5.7.8之前的MySQL版本中,此选项仅用于恢复使用基于行的格式记录的表。警告在使用此选项时,不重写表名中包含数据库名的语句以使用新名称。
用作此选项值的重写规则是具有以下形式的字符串
'
,因此必须用引号括起来。from_name
->to_name
'要使用多个重写规则,多次指定该选项,如下所示:
Mysqlbinlog——rewrite-db='dbcurrent-> bold'——rewrite-db='dbtest->dbcurrent' \ binlog。00001 > / tmp / statements.sql
与the一起使用时
——数据库
选项时,——rewrite-db
选项首先应用;然后——数据库
选项,使用重写的数据库名称。在这方面,提供选项的顺序没有区别。这意味着,例如,如果mysqlbinlog是开始
——rewrite-db = ' mydb - > yourdb”= yourdb——数据库
,然后对数据库中的任何表进行所有更新mydb
而且yourdb
都包含在输出中。另一方面,如果一开始——rewrite-db = ' mydb - > yourdb”——数据库mydb
,然后mysqlbinlog不输出任何语句:因为所有更新到mydb
是否首先重写为更新yourdb
在应用之前——数据库
选项,则没有匹配的更新——数据库= mydb
。不要以旧的(4.1之前的)格式向服务器发送密码。这将阻止连接,除非服务器使用更新的密码格式。
从MySQL 5.7.5开始,这个选项已被弃用;希望在未来的MySQL版本中删除它。它总是启用的,并试图禁用它(
——skip-secure-auth
,——secure-auth = 0
)产生错误。在MySQL 5.7.5之前,这个选项默认是启用的,但可以禁用。请注意使用4.1之前的散列方法的密码比使用本机密码散列方法的密码更不安全,应该避免使用。4.1之前的密码已弃用,MySQL 5.7.5已删除对密码的支持。有关帐户升级说明,请参见第6.4.1.3节,“从4.1之前的密码哈希和mysql_old_password插件迁移”。
只显示由具有给定服务器ID的服务器创建的事件。
只使用第一个
N
位的server_id
识别服务器。如果二进制日志写成amysqld如果服务器id位设置为小于32,并且用户数据存储在最高有效位中,则运行mysqlbinlog与——server-id-bits
设置为32可以看到该数据。的版本支持此选项mysqlbinlog由NDB集群发行版提供,或从NDB集群源代码构建。
——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
,此选项仅适用于使用OpenSSL构建的MySQL。有关
sha256_password
而且caching_sha2_password
插件,看到第6.4.1.5节“SHA-256可插式认证”,第6.4.1.4节“缓存SHA-2可插入认证”。的
——server-public-key-path
选项在MySQL 5.7.23中添加。添加一个
组名称
语句,以指定用于处理日志文件的字符集。charset_name
——shared-memory-base-name =
的名字
在Windows上,使用共享内存连接到本地服务器时使用的共享内存名称。默认值为
MYSQL
。共享内存名称区分大小写。方法启动服务器时,此选项才适用
shared_memory
已启用支持共享内存连接的系统变量。——短小精悍
,- s
只显示日志中包含的语句,而不显示任何额外信息或基于行的事件。这只用于测试,不应该在生产系统中使用。
不要在输出中显示任何gtid。当从一个或多个包含gtid的二进制日志写入转储文件时,需要这样做,如下例所示:
mysqlbinlog——skip-gtids binlog。000001 > / tmp /转储。SQL mysqlbinlog——skip-gtids binlog。000002 > > / tmp /转储。SQL mysql -u root -p -e "source /tmp/dump.sql"
否则,通常不建议在生产环境中使用此选项。
——套接字=
,路径
- s
路径
为连接
本地主机
,即要使用的Unix套接字文件,或者在Windows上是要使用的命名管道的名称。在Windows上,此选项仅适用于服务器是用
named_pipe
系统变量已启用,支持命名管道连接。控件指定的Windows组的成员named_pipe_full_access_group
系统变量。选项以
——ssl
指定是否使用加密连接到服务器,并指示在哪里查找SSL密钥和证书。看到加密连接的命令选项。在时间戳等于或晚于
datetime
论点。的datetime
值相对于运行机器上的本地时区mysqlbinlog。的格式接受该值DATETIME
或时间戳
数据类型。例如:Mysqlbinlog——start-datetime="2005-12-25 11:25:56" binlog.000003
此选项对于按时间点恢复非常有用。看到第7.5节,“时间点(增量)恢复”。
——起始位置=
,N
- j
N
在第一个事件的位置等于或大于时开始读取二进制日志
N
。此选项适用于命令行中命名的第一个日志文件。此选项对于按时间点恢复非常有用。看到第7.5节,“时间点(增量)恢复”。
的第一个事件时戳等于或晚于
datetime
论点。的描述——start-datetime
选项的信息datetime
价值。此选项对于按时间点恢复非常有用。看到第7.5节,“时间点(增量)恢复”。
此选项用于
——read-from-remote-server
。它告诉mysqlbinlog保持与服务器的连接。否则mysqlbinlog当从服务器传输完最后一个日志文件后退出。——stop-never
意味着——to-last-log
,因此只需要在命令行上命名要传输的第一个日志文件。——stop-never
通常与——生
要做实时二进制日志备份,也可以不用——生
在服务器生成日志事件时,维护日志事件的连续文本显示。——stop-never-slave-server-id =
id
与
——stop-never
,mysqlbinlog当它连接到服务器时,报告服务器ID为65535。——stop-never-slave-server-id
显式指定要报告的服务器ID。它可用于避免与复制服务器或其他服务器的ID发生冲突mysqlbinlog的过程。看到章节4.6.7.4,“指定mysqlbinlog服务器ID”。在第一个事件的位置等于或大于时停止读取二进制日志
N
。此选项应用于命令行中命名的最后一个日志文件。此选项对于按时间点恢复非常有用。看到第7.5节,“时间点(增量)恢复”。
加密连接所允许的TLS协议。一个或多个以逗号分隔的协议名称的列表。可以以此选项命名的协议取决于用于编译MySQL的SSL库。有关详细信息,请参见第6.3.2节“加密连接TLS协议和密码”。
此选项在MySQL 5.7.10中添加。
——to-last-log
,- t
不要在MySQL服务器请求的二进制日志结束时停止,而是继续打印,直到最后一个二进制日志结束。如果您将输出发送到相同的MySQL服务器,这可能会导致无休止的循环。这个选项需要
——read-from-remote-server
。——用户=
,user_name
- u
user_name
连接到远程服务器时使用的MySQL帐户的用户名。
——详细
,- v
重构行事件并将它们显示为注释的SQL语句。如果给出两次该选项(通过传入"-vv"或"——verbose——verbose"),输出将包括指示列数据类型和一些元数据的注释,如果这样配置的话,还将包含行查询日志事件。
举个例子来说明
——base64-output
而且——详细
关于行事件输出,请参见“mysqlbinlog行事件显示”。验证二进制日志文件中的校验和。
——版本
,- v
显示版本信息并退出。
在MySQL 5.7中,mysqlbinlog版本号是3.4。
的输出可以通过管道传输mysqlbinlog到mysql客户端执行二进制日志中包含的事件。当您有一个旧的备份(参见第7.5节,“时间点(增量)恢复”).例如:
mysqlbinlog binlog。000001 | mysql -u root -p
或者:
mysqlbinlog binlog。[0-9]* | mysql -u root -p
如果所产生的语句mysqlbinlog可能包含团
价值观,这些可能会导致问题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 - # #
。