mysqlbinlog- 处理二进制日志文件的实用工具 学习笔记
参考 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- 处理二进制日志文件的实用工具 学习笔记的更多相关文章
- 使用mysqlbinlog从二进制日志文件中查询mysql执行过的sql语句 (原)
前提MySQL开启了binlog日志操作1. 查看MySQL是否开启binlog(进mysql操作) mysql> show variables like 'log_bin%'; 2 ...
- Mysql: mysqlbinlog命令查看日志文件
想查看mysql的binlog文件,但是裸的binlog文件是无法直视的,mysqlbinlog这个工具是用来查看binlog文件内容的(使用方式man mysqlbinlog查看),但是使用mysq ...
- mysql二进制日志文件出错导致mysql服务无法启动
今天打开phpmyadmin发现连不上mysql数据库,重新启动mysql启动不起来,查看日志发现例如以下错误 <span style="font-family:SimSun;font ...
- 使用mysqlbinlog查看二进制日志
(一)mysqlbinlog工具介绍 binlog类型是二进制的,也就意味着我们没法直接打开看,MySQL提供了mysqlbinlog来查看二进制日志,该工具类似于Oracle的logminer.my ...
- mysqlbinlog抽取二进制日志中某库某表的日志
1.先使用myqlbinlog命令把整个库的二进制日志抽取出来 mysqlbinlog --database=db_name mysql-bin.xxxxxx > db_name.sql 2.然 ...
- mysql日志种类、二进制日志模式、mysqlbinlog解析二进制日志
mysql日志的种类 二进制日志(binary log):记录数据更新的操作,mysqlbinlog 可查看二进制日志文件 错误日志(error log):记录mysql服务进程mysqld的启动.关 ...
- mysql删除二进制日志文件
一.RESET MASTER 这个语句可以验证首次配置主机备机是否成功.步骤如下: 1. 启动master和 slave,开启replication (即 复制) 注:replication (复制) ...
- MySQL二进制日志文件Binlog的三种格式以及对应的主从复制中三种技术
二进制日志文件Binlog的格式主要有三种: 1.Statement:基于SQL语句级别的Binlog,每条修改数据的SQL都会保存到Binlog里面. 2.ROW:基于行级别,每一行数据的变化都会记 ...
- mysql中如何开启binlog?开启二进制日志文件?binary log?
需求描述: 开启mysql的binlog即binary log日志功能,在此记录下. 版本描述: mysql版本:5.7.21-log 操作过程: 1.修改my.cnf并且将以下参数加入其中,重启my ...
随机推荐
- GearCase UI - 自己构建一套基于 Vue 的简易开源组件库
最近 1 ~ 2 月除了开发小程序之外,还一直在继续深入的学习 Vuejs.利用零碎.闲暇的时间整合了一套基于 Vue 的 UI 组件库.命名为 GearCase UI,意为齿轮盒.现在把该项目进行开 ...
- Tesseract 4 自行构建支持双引擎的tessdata 文件
Tesseract 4 版本具备两种识别引擎:新的基于LSTM(神经网络)引擎与传统引擎.通过在初始化时设定不同的EngineMode启动. OCR Engine modes: 0 Legacy en ...
- Vue.js 相关知识(基础)
1. Vue.js 介绍 Vue,读音 /vjuː/,类似于 view),是一套用于构建用户界面的渐进式框架(重点在于视图层). 作者:尤雨溪 注:学习 vue.js 时,一定要抛弃 jQuery 的 ...
- mongodb 如何删除 字段值为 json对象中的某个字段值
例如: { attributes: { birthday:'1988-01-01', name: 'aq' } } birthday是attributes字段的value的一个字段, 我要删除birt ...
- mkswap命令详解
基础命令学习目录首页 原文链接:http://blog.51cto.com/arlen99/1743841 mkswap命令用于在一个文件或者设备上建立交换分区.在建立完之后要使用sawpon命令开始 ...
- Kubernetes探索学习002--Kubernetes的基本使用
Kubernetes 的基本使用方法 原则:使用YAML文件描述你要部署的API对象! 以部署nginx静态站点为例,具体操作及内容如下 1.编写YAML文件 [root@kubernetes01 ~ ...
- Javascript开发者 常用知识
Javascript是一种日益增长的语言,特别是现在ECMAScript规范按照每年的发布时间表发布.伴随着这门语言的规模化和快速发展,掌握JS(不仅仅是jQuery)的重要性,变得更加重要. 这不是 ...
- Spring MVC controller的方法返回值
ModeAndView 可以在构造时确定需要跳转的页面也可以通过setViewName方法来确定需要跳转的页面 String 指定返回页面的视图名称,页面跳转,如果加了@ResponseBody注解, ...
- C++:内存分区
前言:最近正在学习有关static的知识,发觉对C++的内存分区不是很了解,上网查了很多资料,遂将这几天的学习笔记进行了简单整理,发表在这里 • 栈区(stack):主要用来存放函数的参数以及局部变量 ...
- UIPickerView的使用
简介:UIPickerView是一个选择器控件,它比UIDatePicker更加通用,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活.UIPick ...