(2) mysqlbinlog 精确提取sql语句

命令:

mysqlbinlog -d oldgirl mysql-bin.000046 
mysqlbinlog --start-position=442 --stop-position=549 mysql-bin.000046 
mysqlbinlog --start-datetime="2016-04-11 21:42:45" --stop-datetime="2016-04-11 21:43:22" mysql-bin.000046

1 mysqlbinlog 记录的是 所有库的log日志

如:

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

/*!50003 SET @[email protected]@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

DELIMITER /*!*/;

# at 4

#160411 21:00:35 server id 1  end_log_pos 107   Start: binlog v 4, server v 5.5.32-log created 160411 21:00:35 at startup

# Warning: this binlog is either in use or was not closed properly.

ROLLBACK/*!*/;

BINLOG ‘

858LVw8BAAAAZwAAAGsAAAABAAQANS41LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAADznwtXEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==

‘/*!*/;

# at 107

#160411 21:01:16 server id 1  end_log_pos 194   Query   thread_id=2     exec_time=0     error_code=0

SET TIMESTAMP=1460379676/*!*/;

SET @@session.pseudo_thread_id=2/*!*/;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

SET @@session.sql_mode=0/*!*/;

SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;

/*!\C latin1 *//*!*/;

SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=33/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

create database oldboy

/*!*/;

# at 194

#160411 21:03:34 server id 1  end_log_pos 344   Query   thread_id=2     exec_time=0     error_code=0

use oldboy/*!*/;

SET TIMESTAMP=1460379814/*!*/;

create table student(id int(4) auto_increment primary key, name varchar(16) not null)

/*!*/;

# at 344

#160411 21:04:53 server id 1  end_log_pos 414   Query   thread_id=2     exec_time=0     error_code=0

SET TIMESTAMP=1460379893/*!*/;

BEGIN

/*!*/;

# at 414

#160411 21:04:53 server id 1  end_log_pos 442   Intvar

SET INSERT_ID=1/*!*/;

# at 442

#160411 21:04:53 server id 1  end_log_pos 549   Query   thread_id=2     exec_time=0     error_code=0

SET TIMESTAMP=1460379893/*!*/;

insert into student (name) values (‘andy‘)

/*!*/;

# at 549

#160411 21:04:53 server id 1  end_log_pos 576   Xid = 13

COMMIT/*!*/;

# at 576

#160411 21:04:57 server id 1  end_log_pos 646   Query   thread_id=2     exec_time=0     error_code=0

SET TIMESTAMP=1460379897/*!*/;

BEGIN

/*!*/;

# at 646

#160411 21:04:57 server id 1  end_log_pos 674   Intvar

SET INSERT_ID=2/*!*/;

# at 674

#160411 21:04:57 server id 1  end_log_pos 781   Query   thread_id=2     exec_time=0     error_code=0

SET TIMESTAMP=1460379897/*!*/;

insert into student (name) values (‘jack‘)

/*!*/;

# at 781

#160411 21:04:57 server id 1  end_log_pos 808   Xid = 14

COMMIT/*!*/;

# at 808

#160411 21:42:02 server id 1  end_log_pos 897   Query   thread_id=3     exec_time=0     error_code=0

SET TIMESTAMP=1460382122/*!*/;

create database oldgirl

/*!*/;

# at 897

#160411 21:42:45 server id 1  end_log_pos 1048  Query   thread_id=3     exec_time=0     error_code=0

use oldboy/*!*/;

SET TIMESTAMP=1460382165/*!*/;

create table new_student(id int auto_increment primary key, name varchar(16) not null)

/*!*/;

# at 1048

#160411 21:43:22 server id 1  end_log_pos 1118  Query   thread_id=3     exec_time=0     error_code=0

SET TIMESTAMP=1460382202/*!*/;

BEGIN

/*!*/;

# at 1118

#160411 21:43:22 server id 1  end_log_pos 1146  Intvar

SET INSERT_ID=1/*!*/;

# at 1146

#160411 21:43:22 server id 1  end_log_pos 1257  Query   thread_id=3     exec_time=0     error_code=0

SET TIMESTAMP=1460382202/*!*/;

insert into new_student (name) values (‘lili‘)

/*!*/;

# at 1257

#160411 21:43:22 server id 1  end_log_pos 1284  Xid = 22

COMMIT/*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by mysqlbinlog */;

/*!50003 SET [email protected]_COMPLETION_TYPE*/;

命令1:指定库

-d, --database=name List entries for just this database (local log only).

举例:

mysqlbinlog -d oldgirl mysql-bin.000046 > oldgirl.sql

[[email protected] mysql]# cat oldgirl.sql

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

/*!50003 SET @[email protected]@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

DELIMITER /*!*/;

# at 4

#160411 21:00:35 server id 1  end_log_pos 107   Start: binlog v 4, server v 5.5.32-log created 160411 21:00:35 at startup

# Warning: this binlog is either in use or was not closed properly.

ROLLBACK/*!*/;

BINLOG ‘

858LVw8BAAAAZwAAAGsAAAABAAQANS41LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAADznwtXEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==

‘/*!*/;

# at 107

# at 194

# at 344

#160411 21:04:53 server id 1  end_log_pos 414   Query   thread_id=2     exec_time=0     error_code=0

SET TIMESTAMP=1460379893/*!*/;

SET @@session.pseudo_thread_id=2/*!*/;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

SET @@session.sql_mode=0/*!*/;

SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;

/*!\C latin1 *//*!*/;

SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=33/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

BEGIN

/*!*/;

# at 414

#160411 21:04:53 server id 1  end_log_pos 442   Intvar

SET INSERT_ID=1/*!*/;

# at 442

# at 549

#160411 21:04:53 server id 1  end_log_pos 576   Xid = 13

COMMIT/*!*/;

# at 576

#160411 21:04:57 server id 1  end_log_pos 646   Query   thread_id=2     exec_time=0     error_code=0

SET TIMESTAMP=1460379897/*!*/;

BEGIN

/*!*/;

# at 646

#160411 21:04:57 server id 1  end_log_pos 674   Intvar

SET INSERT_ID=2/*!*/;

# at 674

# at 781

#160411 21:04:57 server id 1  end_log_pos 808   Xid = 14

COMMIT/*!*/;

# at 808

#160411 21:42:02 server id 1  end_log_pos 897   Query   thread_id=3     exec_time=0     error_code=0

SET TIMESTAMP=1460382122/*!*/;

create database oldgirl

/*!*/;

# at 897

# at 1048

#160411 21:43:22 server id 1  end_log_pos 1118  Query   thread_id=3     exec_time=0     error_code=0

SET TIMESTAMP=1460382202/*!*/;

BEGIN

/*!*/;

# at 1118

#160411 21:43:22 server id 1  end_log_pos 1146  Intvar

SET INSERT_ID=1/*!*/;

# at 1146

# at 1257

#160411 21:43:22 server id 1  end_log_pos 1284  Xid = 22

COMMIT/*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by mysqlbinlog */;

/*!50003 SET [email protected]_COMPLETION_TYPE*/;



命令2:指定位置范围

--start-position

--stop-position

我只想提取含有 insert into student (name) values (‘andy‘) 这条语句的binlog

mysqlbinlog --start-position=442 --stop-position=549 mysql-bin.000046

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

/*!50003 SET @[email protected]@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

DELIMITER /*!*/;

# at 4

#160411 21:00:35 server id 1  end_log_pos 107   Start: binlog v 4, server v 5.5.32-log created 160411 21:00:35 at startup

# Warning: this binlog is either in use or was not closed properly.

ROLLBACK/*!*/;

BINLOG ‘

858LVw8BAAAAZwAAAGsAAAABAAQANS41LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAADznwtXEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==

‘/*!*/;

# at 442

#160411 21:04:53 server id 1  end_log_pos 549   Query   thread_id=2     exec_time=0     error_code=0

use oldboy/*!*/;

SET TIMESTAMP=1460379893/*!*/;

SET @@session.pseudo_thread_id=2/*!*/;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

SET @@session.sql_mode=0/*!*/;

SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;

/*!\C latin1 *//*!*/;

SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=33/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

insert into student (name) values (‘andy‘)

/*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by mysqlbinlog */;

/*!50003 SET [email protected]_COMPLETION_TYPE*/;



命令三:用时间来指定(但是时间不准确 1s钟可很多语句)

--start-datetime

--stop-datetime  (语句不会包括在stop的这个时间点 是截止线)

mysqlbinlog --start-datetime="2016-04-11 21:42:45" --stop-datetime="2016-04-11 21:43:22" mysql-bin.000046

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

/*!50003 SET @[email protected]@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

DELIMITER /*!*/;

# at 4

#160411 21:00:35 server id 1  end_log_pos 107   Start: binlog v 4, server v 5.5.32-log created 160411 21:00:35 at startup

# Warning: this binlog is either in use or was not closed properly.

ROLLBACK/*!*/;

BINLOG ‘

858LVw8BAAAAZwAAAGsAAAABAAQANS41LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAADznwtXEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==

‘/*!*/;

# at 897

#160411 21:42:45 server id 1  end_log_pos 1048  Query   thread_id=3     exec_time=0     error_code=0

use oldboy/*!*/;

SET TIMESTAMP=1460382165/*!*/;

SET @@session.pseudo_thread_id=3/*!*/;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

SET @@session.sql_mode=0/*!*/;

SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;

/*!\C latin1 *//*!*/;

SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=33/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

create table new_student(id int auto_increment primary key, name varchar(16) not null)

/*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by mysqlbinlog */;

/*!50003 SET [email protected]_COMPLETION_TYPE*/;



本文出自 “崔德华运维打工从业路” 博客,请务必保留此出处http://cuidehua.blog.51cto.com/5449828/1762780

时间: 2024-12-13 18:57:51

(2) mysqlbinlog 精确提取sql语句的相关文章

mysqlbinlog 可视化查看sql语句

直接mysqlbinlog导出来的文件,执行sql部分的sql语句显示为base64编码格式,无法正常阅读. 所以生成sql记录的时候,不能用常规的办法去生成,需要加上相应的参数才能显示出sql语句 --base64-output=decode-rows -v 例如 mysqlbinlog --base64-output=decode-rows -v --start-date='2017-05-16 12:00:00' --stop-date='2017-05-31 16:20:00' /roo

DLA SQL分析函数:SQL语句审计与分析的利器

1. 简介 Data Lake Analytics(https://www.aliyun.com/product/datalakeanalytics)最新release一组SQL内置函数,用来进行SQL语句的分析.信息提取,方便用户对SQL语句进行语法层面的审计.分析,可以应用于很多安全.数据库日志分析等场景.参考DLA(Data Lake Analytics)之前的文档,只要您的SQL语句文本保存在DLA支持的数据源系统中,就能使用DLA的SQL分析函数,方便.快捷的进行SQL语句的审计和分析

用PHP提取MYSQL二进制日志的SQL语句

上一篇说道,在从日志提取出SQL语句的时候,碰到了一句SQL跨了N行无法提取.后来在网上搜了两句shell: sed -n '/^INSERT /,/;/p' log.sql > log_insert.sql sed -n '/^UPDATE /,/;/p' log.sql > log_update.sql 后经实践发现,这两句shell也是有缺陷的.这个问题是必须解决的,今天就趁这机会用php实现了跨行SQL的提取.注释已经很明了了,只需要注意变量$action为提取的SQL语句头,如DEL

在Excel中使用SQL语句实现精确查询? (2012-08-21 00:00:00)转载▼

在Excel中使用SQL语句实现精确查询 (2012-08-21 00:00:00) 转载▼ 标签: 郑来轶 数据分析 excel sql 数据查询 匹配 分类: 07.MSoffice 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQL语句实现精确查询>,觉得非常受用,分享给大家. 微博上有人回复评论说直接用vlookup.或者导入数据库进行查询处理就好了,岂不是更高效.更灵活:其实给人的第一直观感觉是这样子的,但是我们多想一步,这篇文章的应用场景.使用前提条件

mysqlbinlog根据时间点提取SQL

将test库2017-08-14 16:30:29至2017-08-14 17:30:31的binlog日志导出为1.sql: mysqlbinlog --start-datetime="2017-08-14 16:30:29" --stop-datetime="2017-08-14 17:30:31" --database=test mysql-bin.000893 >1.sql 对于MIXED(部分SQL语句)和ROW模式是以base-64方式记录,SQL

[转]在Excel中使用SQL语句实现精确查询

本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQL语句实现精确查询>,觉得非常受用,分享给大家. 微博上有人回复评论说直接用vlookup.或者导入数据库进行查询处理就好了,岂不是更高效.更灵活:其实给人的第一直观感觉是这样子的,但是我们多想一步,这篇文章的应用场景.使用前提条件是什么?我想到的有以下几个方面:①数据量不是很大的时候:②数据结构导入数

LINQ to SQL语句入门篇 纯属转载

Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select c; 再如:筛选1994 年或之后雇用的雇员:

转:sql语句优化

性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设法对之进行简化. 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN)2)考虑使用临时表或表变量存放中间结果.3)少用子查询4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜. 连接的表越多,其编译的时间和连接的开销也越大,性能越不好控制. 最好是把连接拆开成较小的几个部分逐个顺序执行.

SQL语句优化原则

性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设法对之进行简化. 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN)2)考虑使用临时表或表变量存放中间结果.3)少用子查询4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜. 连接的表越多,其编译的时间和连接的开销也越大,性能越不好控制. 最好是把连接拆开成较小的几个部分逐个顺序执行.