shell动态解析sql的binlog

#!/usr/bin
#设置数据库连接
conn=‘mysql -hhost -Pport -uusername -ppassword‘
#获取最新的binlog文件
logfile=$($conn -e "show master logs" | tail -n 1 | awk -F" " ‘{print $1}‘)
#设置a为1,用户下边的判断
a=1
#while循环
while true
do
    #获取起始datetime
    fromDate=$(date "+%Y-%m-%d %H:%M:%S")
    #获取结束datetime
    toDate=$(date "+%Y-%m-%d %H:%M:%S" -d‘+1 second‘ )
    echo "toDate is",$toDate
    echo "a is"$a
    #设置tempDate的值
    if [ $a -eq 1 ]; then
    tempDate=$fromDate
    else
    tempDate=$tmpDate
    fi
    echo "start time is "$tempDate
    echo "stop time is ",$toDate
    #解析binlog,并追加到文件中
    mysqlbinlog -R -hhost -Pport -uusername -ppassword --start-datetime="$tempDate" --stop-datetime="$toDate" $logfile | grep -v "[#|/*!*/;|BEGIN|COMMIT|]" >> content.txt
    #重新设置a的值   a=2
    tmpDate=$toDate
    echo "current log file is "$logfile
done然后tailf content.txt,即可实时观察binlog的输出。

注:因为会追加content.txt的内容,所以可以设置一个定时任务,定期处理content.txt文件,防止文件增长过大

shell动态解析sql的binlog,布布扣,bubuko.com

时间: 2024-10-10 10:31:21

shell动态解析sql的binlog的相关文章

SQL动态配置,动态解析SQL

在项目中使用SQL动态配置的方式可以让后期的维护和发布后的修改变得更加方便,无论使用那种配置方式都离不开解析成最终真正能执行的SQL.下面代码就是一种比较简单的处理方法,SQL的参数以##括起来. 1.在代码中先建立一个需要解析的SQL,后面需要变成配置方式 /// <summary> /// 暂时用于测试 /// </summary> static string _sql = "SELECT * FROM TB_USER WHERE ID = #ID# AND NAME

模拟Hibernate动态生成SQL语句

这里有一个xml配置文件,也就是Hibernate框架中会用到的POJO和数据库的映射文件 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://www.hibernate.org/dtd/hibernate-

自定义ORMapping—动态生成SQL语句

概述 之前在自定义ORMapping--关系表转换为实体或实体集合对象中提到过ORMapping的东西,在那片博客中也有ORMapping实现的一个简单思路,当时只实现了关系表转换为实体或实体集合这个功能,没有实现动态生成SQL这个部分,本片博客就是完善之前的那片博客,实现动态生成SQL语句这么一个功能. 实现思路 1.创建两个自定义特性,分别为表特性和字段特性,目的就是给相应的实体类的类名和属性名,打上相应的特性,从而创建类名和表名,属性和表字段名之间的对应关系 2.创建一个特性解析类,用来解

通过Velocity模板实现了Hibernate sql-query的动态(SQL/HQL)

一.简介 Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行.而MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架,MyBatis需要使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.在编写比较复杂的动态SQL语句时,Mybatis的SQL是手动编写的,所以

plsql动态的sql

12 动态SQL语句和动态PLSQL语句 SQL语句 --  静态的SQL语句.动态的SQL语句 静态的SQL语句  --  在编译的时候已经确定的SQL,语法和语义引用也是在编译的时候确定下来的     动态的SQL语句  --  由字符串组成,在运行的时候编译和执行 12.1 动态SQL语句 (1) 动态SQL的简单案例 案例1: 动态创建表示例 declare  dyn_tab_name varchar2(30):='temp';  dyn_string varchar2(150);beg

Protobuf动态解析在Java中的应用 包含例子程序

最近在做ProtoBuf相关的项目,其中用到了动态解析,网上看了下相关资料和博文都比较少,自己来写一个记录一下学习过程. Protocol Buffers是结构化数据格式标准,提供序列化和反序列方法,用于存储和交换.语言中立,平台无关.可扩展.目前官方提供了C++.Java.Python API,也有其他语言的开源api(比如php).可通过 .proto文件生成对应语言的类代码 如果已知protobuf内容对应的是哪个类对象,则可以直接使用反序列化方法搞定(Xxx.parseFrom(inpu

MySQL之视图、存储过程、触发器、函数、事务、动态执行SQL

视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 创建视图: create view v1 as select * from student where id > 100; 今后可以直接通过: select * from v1;   #直接访问学生ID大于100的信息 删除视图: drop view v1; 修改视图: alter view v1 as select id,name f

mybatis使用注解替代xml配置,动态生成Sql

mybatis使用注解替代xml配置时,遇到判断条件是否为null或者为空时,@Select很难搞定,不知道怎么办? mybatis3中增加了使用注解来配置Mapper的新特性,使用 SelectProvider来动态生成sql. 典型的使用场景 1. 无参数@SelectProvide方法在Mapper接口方法上和@SelectProvide指定类方法上,均无参数:UserMapper.java: 1     @SelectProvider(type = SqlProvider.class, 

利用 druid 解析器解析SQL

最近参与一个开源项目,一个功能的实现,用到了 druid 解析器来解析SQL,记录下如果使用 druid 来解析SQL,实现对SQL的拦截改写. 1. 对 insert 语句进行解析: private static String convertInsertSQL(String sql){ try{ MySqlStatementParser parser = new MySqlStatementParser(sql); SQLStatement statement = parser.parseSt