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 ...
随机推荐
- Docker 私有仓库方案比较与搭建
我们知道docker镜像可以托管到dockerhub中,跟代码库托管到github是一个道理.但如果我们不想把docker镜像公开放到dockerhub中,只想在部门或团队内部共享docker镜像,能 ...
- 初学node.js-nodejs中实现HTTP服务(3)
一.node.js实现服务端 创建hello-world-server.js文件,服务端源码如下: /** * node.js实现http服务端 */ var http = require('http ...
- go vendor 安装失败的原因分析
安装之前的配置 export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin 1 2 安装 通常,我们查到的安装方法一般是下面这种 go get -u gi ...
- maven摘除jar包中配置文件
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-p ...
- 亚马逊的客户服务和承诺 - Delay in shipping your Amazon.com order - Missed Fulfillment Promise
We encountered a delay in shipping your order. We apologize for the inconvenience. Since your packag ...
- python基础知识-11-函数装饰器
python其他知识目录 1.装饰器学习前热身准备 1.1装饰器简介 1.2装饰器热身分析 ) def func(): pass v1 = v2 = func #将函数名赋予一个变量,就和变量赋值是同 ...
- Windows搭建python开发环境
python你不去认识它,可能没什么,一旦你认识了它,你就会爱上它 基本概念Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum ...
- Python20-Day06
常用模块 一.random模块 import random # print(random.random()) #打印0-1之间的小数 # print(random.randint(1,3)) #大于等 ...
- css修改input自动提示的黄色背景
css修改input自动提示的黄色背景 input:-webkit-autofill { background-color: #FAFFBD; background-image: none; -web ...
- 安装hive的web界面
参考: http://blog.csdn.net/xinghalo/article/details/52433914 报错参考; http://blog.163.com/artsn@126/blog/ ...