mysqlbinlog详解
mysqlbinlog用于处理二进制日志文件的实用工具详解mysqlbinlog
从二进制日志读取语句的工具。在二进制日志文件中包含的执行过的语句的日志可用来帮助从崩溃中恢复。
binlog日志打开方法
在my.cnf这个文件中加一行(Windows为my.ini)。
#vi /etc/my.cnf
[mysqld]
log-bin=mysqlbin-log #添加这一行就ok了=号后面的名字自己定义吧
然后我们可以对数据库做简单的操作后到mysql数据文件所在的目录来看binlog文件
[root@linux mysql]# ll
-rw-rw—- 1 mysql mysql 813255 Nov 25 18:14 mysqlbin-log.000001
搞定了
mysqlbinlog用法详细说明
服务器生成的二进制日志文件写成二进制格式。要想检查这些文本格式的文件,应使用mysqlbinlog实用工具。
应这样调用mysqlbinlog:
shell> mysqlbinlog [options] log-files…例如,要想显示二进制日志binlog.000003的内容,使用下面的命令:
shell> mysqlbinlog binlog.0000003输出包括在binlog.000003中包含的所有语句,以及其它信息例如每个语句花费的时间、客户发出的线程ID、发出线程时的时间戳等等。
通常情况,可以使用mysqlbinlog直接读取二进制日志文件并将它们用于本地MySQL服务器。也可以使用–read-from-remote-server选项从远程服务器读取二进制日志。
当读取远程二进制日志时,可以通过连接参数选项来指示如何连接服务器,但它们经常被忽略掉,除非你还指定了–read-from-remote-server选项。这些选项是–host、–password、–port、–protocol、–socket和–user。
还可以使用mysqlbinlog来读取在复制过程中从服务器所写的中继日志文件。中继日志格式与二进制日志文件相同。
mysqlbinlog支持下面的选项:
·
—help,-?
显示帮助消息并退出。
·
—database=db_name,-d db_name
只列出该数据库的条目(只用本地日志)。
·
–force-read,-f
使用该选项,如果mysqlbinlog读它不能识别的二进制日志事件,它会打印警告,忽略该事件并继续。没有该选项,如果mysqlbinlog读到此类事件则停止。
·
–hexdump,-H
在注释中显示日志的十六进制转储。该输出可以帮助复制过程中的调试。在MySQL 5.1.2中添加了该选项。
·
–host=host_name,-h host_name
获取给定主机上的MySQL服务器的二进制日志。
·
–local-load=path,-l pat
为指定目录中的LOAD DATA INFILE预处理本地临时文件。
·
–offset=N,-o N
跳过前N个条目。
·
–password[=password],-p[password]
当连接服务器时使用的密码。如果使用短选项形式(-p),选项和 密码之间不能有空格。如果在命令行中–password或-p选项后面没有 密码值,则提示输入一个密码。
·
–port=port_num,-P port_num
用于连接远程服务器的TCP/IP端口号。
·
–position=N,-j N
不赞成使用,应使用–start-position。
·
–protocol={TCP | SOCKET | PIPE | -position
使用的连接协议。
·
–read-from-remote-server,-R
从MySQL服务器读二进制日志。如果未给出该选项,任何连接参数选项将被忽略。这些选项是–host、–password、–port、–protocol、–socket和–user。
·
–result-file=name, -r name
将输出指向给定的文件。
·
–short-form,-s
只显示日志中包含的语句,不显示其它信息。
·
–socket=path,-S path
用于连接的套接字文件。
·
–start-datetime=datetime
从二进制日志中第1个日期时间等于或晚于datetime参量的事件开始读取。datetime值相对于运行mysqlbinlog的机器上的本地时区。该值格式应符合DATETIME或TIMESTAMP数据类型。例如:
shell> mysqlbinlog –start-datetime=”2004-12-25 11:25:56″ binlog.000003该选项可以帮助点对点恢复。
·
–stop-datetime=datetime
从二进制日志中第1个日期时间等于或晚于datetime参量的事件起停止读。关于datetime值的描述参见–start-datetime选项。该选项可以帮助及时恢复。
·
–start-position=N
从二进制日志中第1个位置等于N参量时的事件开始读。
·
–stop-position=N
从二进制日志中第1个位置等于和大于N参量时的事件起停止读。
·
–to-last-logs,-t
在MySQL服务器中请求的二进制日志的结尾处不停止,而是继续打印直到最后一个二进制日志的结尾。如果将输出发送给同一台MySQL服务器,会导致无限循环。该选项要求–read-from-remote-server。
·
–disable-logs-bin,-D
禁用二进制日志。如果使用–to-last-logs选项将输出发送给同一台MySQL服务器,可以避免无限循环。该选项在崩溃恢复时也很有用,可以避免复制已经记录的语句。注释:该选项要求有SUPER权限。
·
–user=user_name,-u user_name
连接远程服务器时使用的MySQL用户名。
·
–version,-V
显示版本信息并退出。
还可以使用–var_name=value选项设置下面的变量:
·
open_files_limit
指定要保留的打开的文件描述符的数量。
可以将mysqlbinlog的输出传到mysql客户端以执行包含在二进制日志中的语句。如果你有一个旧的备份,该选项在崩溃恢复时也很有用:
shell> mysqlbinlog hostname-bin.000001 | mysql或:
shell> mysqlbinlog hostname-bin.[0-9]* | mysql如果你需要先修改含语句的日志,还可以将mysqlbinlog的输出重新指向一个文本文件。(例如,想删除由于某种原因而不想执行的语句)。编辑好文件后,将它输入到mysql程序并执行它包含的语句。
mysqlbinlog有一个–position选项,只打印那些在二进制日志中的偏移量大于或等于某个给定位置的语句(给出的位置必须匹配一个事件的开始)。它还有在看见给定日期和时间的事件后停止或启动的选项。这样可以使用–stop-datetime选项进行点对点恢复(例如,能够说“将数据库前滚动到今天10:30 AM的位置”)。
如果MySQL服务器上有多个要执行的二进制日志,安全的方法是在一个连接中处理它们。下面是一个说明什么是不安全的例子:
shell> mysqlbinlog hostname-bin.000001 | mysql # DANGER!!shell> mysqlbinlog hostname-bin.000002 | mysql # DANGER!!使用与服务器的不同连接来处理二进制日志时,如果第1个日志文件包含一个CREATE TEMPORARY TABLE语句,第2个日志包含一个使用该临时表的语句,则会造成问题。当第1个mysql进程结束时,服务器撤销临时表。当第2个mysql进程想使用该表时,服务器报告 “不知道该表”。
要想避免此类问题,使用一个连接来执行想要处理的所有二进制日志中的内容。下面提供了一种方法:
shell> mysqlbinlog hostname-bin.000001 hostname-bin.000002 | mysql另一个方法是:
shell> mysqlbinlog hostname-bin.000001 > /tmp/statements.sqlshell> mysqlbinlog hostname-bin.000002 >> /tmp/statements.sqlshell> mysql -e “source /tmp/statements.sql”mysqlbinlog产生的输出可以不需要原数据文件即可重新生成一个LOAD DATA INFILE操作。mysqlbinlog将数据复制到一个临时文件并写一个引用该文件的LOAD DATA LOCAL INFILE语句。由系统确定写入这些文件的目录的默认位置。要想显式指定一个目录,使用–local-load选项。
因为mysqlbinlog可以将LOAD DATA INFILE语句转换为LOAD DATA LOCAL INFILE语句(也就是说,它添加了LOCAL),用于处理语句的客户端和服务器必须配置为允许LOCAL操作。
警告:为LOAD DATA LOCAL语句创建的临时文件不会自动删除,因为在实际执行完那些语句前需要它们。不再需要语句日志后应自己删除临时文件。文件位于临时文件目录中,文件名类似original_file_name-#-#。
–hexdump选项可以在注释中产生日志内容的十六进制转储:
shell> mysqlbinlog –hexdump master-bin.000001上述命令的输出应类似:
;;# at 4#051024 17:24:13 server id 1 end_log_pos 98# Position Timestamp Type Master ID Size Master Pos Flags# 00000004 9d fc 5c 43 0f 01 00 00 00 5e 00 00 00 62 00 00 00 00 00# 00000017 04 00 35 2e 30 2e 31 35 2d 64 65 62 75 67 2d 6c |..5.0.15.debug.l|# 00000027 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |og…………..|# 00000037 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…………….|# 00000047 00 00 00 00 9d fc 5c 43 13 38 0d 00 08 00 12 00 |…….C.8……|# 00000057 04 04 04 04 12 00 00 4b 00 04 1a |…….K…|# Start: binlog v 4, server v 5.0.15-debug-log created 051024 17:24:13# at startupROLLBACK;十六进制转储的输出包含下面的元素:
·
Position: The byte position within the log file.
·
Timestamp: The event timestamp. In the example just shown, ’9d fc 5c 43′ is the representation of ’051024 17:24:13′ in hexadecimal.
·
Type: The type of the log event. ’0f’ means that the example event is a FORMAT_DESCRIPTION_EVENT. The types are:
·
00 UNKNOWN_EVENT·
This event should never be present in the log.·
01 START_EVENT_V3·
This indicates the start of a log file written by MySQL 4 or earlier.·
02 QUERY_EVENT·
The most common type of events. These contain queries executed·
on the master.·
03 STOP_EVENT·
Indicates that master has stopped.·
04 ROTATE_EVENT·
Written when the master switches to a new log file.·
05 INTVAR_EVENT·
Used mainly for AUTO_INCREMENT values and if the LAST_INSERT_ID()·
function is used in the statement.·
06 LOAD_EVENT·
Used for LOAD DATA INFILE in MySQL 3.23.·
07 SLAVE_EVENT·
Reserved for future use.·
08 CREATE_FILE_EVENT·
Used for LOAD DATA INFILE statements. This indicates the start·
of execution of such a statement. A temporary file is created·
on the slave. Used in MySQL 4 only.·
09 APPEND_BLOCK_EVENT·
Contains data for use in a LOAD DATA INFILE statement. The·
data is stored in the temporary file on the slave.·
0a EXEC_LOAD_EVENT·
Used for LOAD DATA INFILE statements. The contents of the·
temporary file is stored in the table on the slave.·
Used in MySQL 4 only.·
0b DELETE_FILE_EVENT·
Rollback of LOAD DATA INFILE statement. The temporary file·
should be deleted on slave.·
0c NEW_LOAD_EVENT·
Used for LOAD DATA INFILE in MySQL 4 and earlier.·
0d RAND_EVENT·
Used to send information about random values if the RAND()·
function is used in the query.·
0e USER_VAR_EVENT·
Used to replicate user variables.·
0f FORMAT_DESCRIPTION_EVENT·
This indicates the start of a log file written by MySQL 5 or later.·
10 XID_EVENT·
Event indicating commit of XA transaction·
11 BEGIN_LOAD_QUERY_EVENT·
Used for LOAD DATA statements in MySQL 5 and later.·
12 EXECUTE_LOAD_QUERY_EVENT·
Used for LOAD DATA statements in MySQL 5 and later.·
13 TABLE_MAP_EVENT·
Reserved for future use·
14 WRITE_ROWS_EVENT·
Reserved for future use·
15 UPDATE_ROWS_EVENT·
Reserved for future use·
16 DELETE_ROWS_EVENT·
Reserved for future use·
Master ID: The server id of the master that created the event.
·
Size: The size in bytes of the event.
·
Master Pos: The position of the event in the original master log file.
·
Flags: 16 flags.
·
01 LOG_EVENT_BINLOG_IN_USE_F·
Log file correctly closed (Used only in FORMAT_DESCRIPTION_EVENT)·
If this flag is set (if the flags are e.g. ’01 00′) in an·
FORMAT_DESCRIPTION_EVENT, then the log file has not been·
properly closed. Most probably because of a master crash (for·
example, due to power failure).·
02 Reserved for future use.·
04 LOG_EVENT_THREAD_SPECIFIC_F·
Set if the event is dependent on the connection it was·
executed in (example ’04 00′), e.g. if the event uses·
temporary tables.·
08 LOG_EVENT_SUPPRESS_USE_F·
Set in some circumstances when the event is not dependent on·
the current database其它标志保留用于将来使用。
在以后的版本中十六进制转储输出的格式可能会改变。
来源http://blog.sina.com.cn/s/blog_4a80a5730101onh4.html
mysqlbinlog详解的更多相关文章
- MySQL程序只mysqlbinlog详解
mysqlbinlog命令详解 mysqlbinlog用于处理二进制的日志文件,如果想要查看这些日志文件的文本内容,就需要使用mysqlbinlog工具 用法: mysqlbinlog [option ...
- grep -A -B选项详解和mysqlbinlog
grep的-A-B-选项详解(转)[@more@] grep能找出带有关键字的行,但是工作中有时需要找出该行前后的行,下面是解释 1. grep -A1 keyword filename 找出file ...
- MySql-Binlog协议详解
Reference: https://blog.csdn.net/hj7jay/article/details/56665057?utm_source=blogxgwz7 MySql-Binlog协议 ...
- mha配置参数详解
mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...
- 【夯实Mysql基础】MySQL在Linux系统下配置文件及日志详解
本文地址 分享提纲: 1. 概述 2. 详解配置文件 3. 详解日志 1.概述 MySQL配置文件在Windows下叫my.ini,在MySQL的安装根目录下:在Linux下叫my.cnf,该文件位于 ...
- MySQL 日志管理详解
大纲 一.日志分类 二.日志详解 注:MySQL版本,Mysql-5.5.32(不同版本的mysql变量有所不同) 一.日志分类 错误日志 查询日志 慢查询日志 二进制日志 中继日志 事务日志 滚动日 ...
- MySQL慢查询(二) - pt-query-digest详解慢查询日志
一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdu ...
- MySQL系列详解三:MySQL中各类日志详解-技术流ken
前言 日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 .下面分别对他们进行介绍. 查询日志 1.查看查询日志变 ...
- pt-query-digest详解慢查询日志(转)
一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdu ...
随机推荐
- poj2409
用n个颜色的珠子编项链,求有多少种情况 由N(G,C) = 所有f的稳定核的和/|G| m边形有m种旋转m种翻转 首先说旋转,有模线性方程可知每种旋转都有gcd(m,i)个循环节且每个循环节长度为n/ ...
- C++安装JSONCPP
VS2013里新建一个空的控制台程序(用作测试jsoncpp是否可用),名为: TestJSON 解压下载好的文件:jsoncpp-src-0.5.0.tar.gz 利用VS2008打开jsoncpp ...
- SpringMVC项目中中文字符乱码问题及解决办法总结(非专业最优解决办法) -- ajax传值乱码; request.getParameter()乱码;
情况一: ajax中传值时是乱码(后台可以获取到中文字符,但用@ResponseBody返回时前台为乱码) 情况二: Controller 中 request.getParameter()获取到的是乱 ...
- php开发客服系统(持久连接+轮询+反向ajax)
欢迎在php严程序 - php教程学习AJAX教程, 本节课讲解:php开发客服系统(持久连接+轮询+反向ajax) php开发客服系统(下载源码) 用户端(可直接给客户发送消息)客服端(点击用户名. ...
- PHP获取图片颜色值,检测图片主要颜色的代码:
<?php $i=imagecreatefromjpeg("photo3.jpg");//测试图片,自己定义一个,注意路径 for ($x=0;$x<imagesx($ ...
- 第四届CCF大数据学术会议征文通知
第四届CCF大数据学术会议征文通知 2016年10月,兰州 近几年,大数据是各界高度关注积极布局的热点方向.2015年8月,国务院发表<促进大数据发展行动纲要>,正式将大数据提升为国家战略 ...
- SelectedNode与e.node的区别
SelectedNode与e.node的区别 待补.......
- 根据SVN的MESSAGE进行多版本输出,反向排序,真是曲折~~~啊
import os,sys,time file = open('svnlog') revList = [] tempList = [] linen = 1 for line in file: if ( ...
- PYTHON线程知识再研习G--线程间通信Event
很多时候,线程之间会有互相通信的需要.常见的情形是次要线程为主要线程执行特定的任务,在执行过程中需要不断报告执行的进度情况.前面的条件变量同步已经涉及到了线程间的通信(threading.Condit ...
- PSAM读卡芯片TDA8007BHL开发
WWT:Work Waiting Time ATR:Answer To Reset,复位应答 etu =F/Df 1. PSAM概述和应用 PSAM(PurchaseSecure Access ...