参考 MySQL 5.5官方简体中文参考手册完美版  8.6 节

调用:

shell> mysqlbinlog [option] log-files...

mysqlbinlog支持下面选项:

  • --help,-? 显示帮助消息并退出
  • --database=db_name, -d db_name 只列出该数据库的条目
  • --force-read, -f  使用该选项,如果mysqlbinlog读他不能识别的二进制日志事件,只会打印警告,忽略该事件并继续,没有该选择,如果mysqlbinlog读到此事件则会停止
  • --hexdump, -H  在注释中显示日志的十六进制转储。该输出可以帮助复制过程中的调试。
  • --host=host_name, -h host_name  获取给定主机上的MySQL服务器的二进制日志
  • --local-load=path, -l path 为指定目录中的LOAD DATE INFILE预处理本地临时文件
  • --offset=N, -o N 跳过前N个条目
  • --password[=password], -p[password] 当前连接服务器时使用的密码
  • --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-from, -s 只显示日志中包含的语句,不显示其他信息
  • --socket=path, -S path 用于连接的套接字文件
  • --start-datetime=datetime 从二进制日志中第1个日期时间等于或晚于datetime参量的事件开始读取。datetime值相对于运行mysqlbinlog的机器上的本地时区。该值格式应符合DATETIME或TIMESTAMP数据类型。

   eg: shell> mysqlbinlog --start-datetime="2005-12-25 11:11:56" binlog.000003

   该选项可以帮助点对点恢复

  • --stop-datetime=datetime  从二进制日志中第1个日期时间 等于或晚于datetime参量的时间起停止读
  • --start-position=N 从二进制日志中的第一个位置等于N参量时的事件开始读
  • --stop-position=N 从二进制日志中第一个位置大于和等于N参量时的时间起停止读
  • --to-last-logs, -t 在MySQL服务器中请求的二进制日志的结尾处不停止,而是继续打印直到最后一个二进制日志的结尾。如果将输出发送给同一台MySQL服务器,会导致无限循环。该选项要求--read-from-remote-server
  • --disable-logs-bin,-D 禁用二进制日志。
  • --user=user_name, -u user_name 连接远程服务器使用MYSQL用户名
  • --version, -V 显示版本信息并退出
  • --var_name=value设置变量 open_file_limit, 指定要保留打开的文件描述符的数量

可以将mysqlbinlog的输出传到mysql客户端以执行包含在二进制日志中的语句。

shell> mysqlbinlog hostname-bin.000005 | mysql

如果需要先修改包含语句的日志,还可以将mysqlbinlog的输出重新执行一个文本文件。编辑好文件后将它输入到mysql程序并执行它包含的语句。

如果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.sql

shell> mysqlbinlog hostname-bin.000002 >> /tmp/statements.sql

shell> 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操作。参见5.6.4节,“LOAD DATA LOCAL安 全问题”。

警告:为LOAD DATA LOCAL语句创建的临时文件不会自动删除,因为在实际执行完那些语句前需要它们。不再 需要语句日志后应自己删除临时文件。文件位于临时文件目录中,文件名类似original_file_name-#-#。

mysqlbinlog- 处理二进制日志文件的实用工具 学习笔记的更多相关文章

  1. 使用mysqlbinlog从二进制日志文件中查询mysql执行过的sql语句 (原)

    前提MySQL开启了binlog日志操作1. 查看MySQL是否开启binlog(进mysql操作) mysql> show variables like 'log_bin%';       2 ...

  2. Mysql: mysqlbinlog命令查看日志文件

    想查看mysql的binlog文件,但是裸的binlog文件是无法直视的,mysqlbinlog这个工具是用来查看binlog文件内容的(使用方式man mysqlbinlog查看),但是使用mysq ...

  3. mysql二进制日志文件出错导致mysql服务无法启动

    今天打开phpmyadmin发现连不上mysql数据库,重新启动mysql启动不起来,查看日志发现例如以下错误 <span style="font-family:SimSun;font ...

  4. 使用mysqlbinlog查看二进制日志

    (一)mysqlbinlog工具介绍 binlog类型是二进制的,也就意味着我们没法直接打开看,MySQL提供了mysqlbinlog来查看二进制日志,该工具类似于Oracle的logminer.my ...

  5. mysqlbinlog抽取二进制日志中某库某表的日志

    1.先使用myqlbinlog命令把整个库的二进制日志抽取出来 mysqlbinlog --database=db_name mysql-bin.xxxxxx > db_name.sql 2.然 ...

  6. mysql日志种类、二进制日志模式、mysqlbinlog解析二进制日志

    mysql日志的种类 二进制日志(binary log):记录数据更新的操作,mysqlbinlog 可查看二进制日志文件 错误日志(error log):记录mysql服务进程mysqld的启动.关 ...

  7. mysql删除二进制日志文件

    一.RESET MASTER 这个语句可以验证首次配置主机备机是否成功.步骤如下: 1. 启动master和 slave,开启replication (即 复制) 注:replication (复制) ...

  8. MySQL二进制日志文件Binlog的三种格式以及对应的主从复制中三种技术

    二进制日志文件Binlog的格式主要有三种: 1.Statement:基于SQL语句级别的Binlog,每条修改数据的SQL都会保存到Binlog里面. 2.ROW:基于行级别,每一行数据的变化都会记 ...

  9. mysql中如何开启binlog?开启二进制日志文件?binary log?

    需求描述: 开启mysql的binlog即binary log日志功能,在此记录下. 版本描述: mysql版本:5.7.21-log 操作过程: 1.修改my.cnf并且将以下参数加入其中,重启my ...

随机推荐

  1. 微信小程序video视频组件

    支持mp4和m3u8的视频格式,其中mp4的需要是h264的视频编码 .1.如果您使用video组件是mp4的但不能播放,大部分是由于编码的问题,当然排除文件不存在等这些客观的因素条件.2.如果使用m ...

  2. 1、Ansible安装配置

    ansible介绍: Ansible是一款基于Python开发的自动化运维工具,主要是实现批量系统配置.批量程序部署.批量运行命令.批量执行任务等等诸多功能.Ansible是一款灵活的开源工具,能够很 ...

  3. 点斜杠 & 如何查看linux程序安装位置 dpkg -L yyy

    方法1: sudo find / -name ssh 方法2: Ubuntu下 看应用程序安装路径的方法 ubuntu下dpkg -L xxx看应用程序安装路径 1.点斜杠 “./”就代表在当前目录下 ...

  4. API验证

    API验证说明 API验证: a. 发令牌: 静态 PS: 隐患 key被别人获取 b. 动态令牌 PS: (问题越严重)用户生成的每个令牌被黑客获取到,都会破解 c. 高级版本 PS: 黑客网速快, ...

  5. Objective-C中,类方法的getter和setter可以用点运算符吗?

    Objective-C中,对象实例property的getter和setter可以使用点运算符来操作,那么类方法的getter和setter可以使用点运算吗? 答案是肯定的. 看如下代码: #impo ...

  6. 如何获取启动页activity

    启动页activity指App启动的第一个activity,介绍几种查看启动页activity的方法: 方法一:问开发,最有效的获取方式 方法二:dumpsys package 包名,前提是知道包名( ...

  7. Task 6.4 冲刺Two之站立会议8

    今天团队主要进行了用户使用的部分,因为软件操作相对来说比较复杂,因为要改很多东西,比方用户注册,还有更改软件连接服务器的IP.所以我们需要对用户进行详细地讲解.

  8. oracle 语句之对数据库的表名就行模糊查询,对查询结果进行遍历,依次获取每个表名结果中的每个字段(存储过程)

    语句的执行环境是plsql的sql窗口, 语句的目的是从整个数据库中的所有表判断 不等于某个字段的记录数 . 代码如下: declare s_sql clob:=''; -- 声明一个变量,该变量用于 ...

  9. 在ASP.NET里实现计算器代码的封装

    一.具体代码 Default2.aspx.cs public partial class Chapter1_Default2 : System.Web.UI.Page { protected void ...

  10. C#窗体——四则运算

    用户需求:程序能接收用户输入的整数答案,并判断对错程序结束时,统计出答对.答错的题目数量.补充说明:0——10的整数是随机生成的用户可以选择四则运算中的一种用户可以结束程序的运行,并显示统计结果.在此 ...