一.简介

介绍

分析binlog工具,现有功能:

  1. 基于业务表分析统计各个表的dml的次数。
  2. 各个业务表的最后访问时间。
  3. 各dml总的次数。
  4. 该binlog的事务总数。
  5. 基于业务表的binlog to sql。
  6. 其他功能敬请期待。

二.使用

适用:centos6+

语言:中文

注意:请先写一个脚本来启动java等程序

1.下载

git clone https://gitee.com/mo-shan/analysis_binlog

cd analysis_binlog

2.更改路径,将这里的mysqlbinlog_path改成mysqlbinlog工具的绝对路径,否则可能会因版本太低导致错误

sed -i 's#^mysqlbinlog=.*#mysqlbinlog=\"/mysqlbinlog_path\"#g' bin/analysis_binlog

将这里的analysis_binlog_path改成analysis_binlog的家目录的绝对路径

sed -i 's#^work_dir=.*#work_dir=\"/analysis_binlog_path\"#g' bin/analysis_binlog

为analysis_binlog配置环境变量(选做)

chmod +x bin/analysis_binlog

echo "export PATH=$(pwd)/bin:${PATH}" >> ${HOME}/.bashrc

3.查看帮助

bash analysis_binlog -h

使用测试-1

1.统计业务表的dml情况

根据需求执行

  • -bfile: 指定binlog文件, 支持多个文件并行分析, 多个文件用逗号相隔, 需要并行分析时请结合-w参数使用
  • -w : 指定并行数, 当需要分析多个binlog文件时该参数有效, 默认是1
  • -t : 指定显示结果的格式/内容, 供选选项有”detail|simple”. 当指定detail的时候结果较为详细, 会打印详细的分析过程, 消耗时间也不直观, simple只做了统计工作
  • -s : 指定排序规则, 供选选项有”insert|update|delete”. 默认会把统计结果做一个排序, 按照表的维度统计出insert update delete的次数, 并按照次数大小排序(默认insert)

注: 其他参数使用请参见帮助手册 bash analysis_binlog -h

2.配置了环境变量使用

analysis_binlog -bfile=/data/mysql/binlog/3306/mysql-bin.000798,/data/mysql/binlog/3306/mysql-bin.000799 -w=2 -t=simple -s=update

未配置环境变量使用

bash bin/analysis_binlog -bfile=/data/mysql/binlog/3306/mysql-bin.000798,/data/mysql/binlog/3306/mysql-bin.000799 -w=2 -t=simple -s=update

3.结果查询

分析完毕会在analysis_binlog家目录下的res目录下保存一个[binlog_file_name.res]文件,使用文本工具打开即可, 建议使用cat, tail, more, 如下结果展示, 会按照表的维度做个统计, 然后按照update的次数排序, Last Time表示该表的最后一次操作

cat mysql-bin.000798.res

使用测试-2

1.binlog to sql

根据需求执行

  • —binlog2sql : 表示将binlog分析成sql。
  • -sw : 表示将结果按照业务表的维度保存,如果是file则将所有分析结果都保存在一个文件。
  • —start-datetime : 开始时间。具体使用请参照mysqlbinlog工具的—start-datetime参数的使用
  • —stop-datetime : 结束时间。具体使用,请参照mysqlbinlog工具的—stop-datetime参数的使用
  • —start-position : 开始的pos值。具体使用,请参照mysqlbinlog工具的—start-position参数的使用
  • —stop-position : 结束的pos值。具体使用,请参照mysqlbinlog工具的—stop-position参数的使用

注: 其他参数使用请参见帮助手册 bash analysis_binlog -h

2.执行

bash bin/analysis_binlog -bfile=/data/mysql/binlog/3306/mysql-bin.000808 --binlog2sql -sw=table --start-datetime="2019-04-21 9:27:10" --stop-datetime="2019-04-22 10:00:00" --start-postion=1510151 --stop-position=1512137

3.结果查询

分析完毕会在analysis_binlog家目录下的res目录下保存一个[binlog_file_name_to_sql.res]文件,使用文本工具打开即可, 如果【—save-way=table】,则会在res目录下创建【table】目录,该目录下会出现binlog_file_db.table.res的文件,这些文件就是保存了这个该binlog分析出来的sql语句, 如下结果展示

cat res/mysql-bin.000808_to_sql.res |more

提示

v_1.1版本引入新参数—record-type or -rt

该参数表示以什么方式统计,可选的方式是两种,一是统计sql的个数,二统计事务的个数,默认是统计sql的个数。

如:某表有十行记录,现在执行delete from t; 如果binlog是row格式,这时候记录到binlog会是十个delete语句,但是是一个事务。这时候这个参数就起作用了。用户可以按照需求并参考使用手册使用该参数。但是需要注意的是如果一个事务里面存在多种dml,比如begin;insert into t select 1;update t2 set c=c+1;commit;对于这样的事务,会将该事务记到t2的update操作,不会记录到t的insert操作。

shell脚本 mysql-binlog分析的更多相关文章

  1. shell脚本异步日志分析-接口耗时、可用率

    背景:现有日志接入日志报表大盘,为了避免作业高峰期间(双十一),系统也要观测系统整体情况,因此提出了观测近五分钟,接口成功率以及耗时等工具(默认统计最近五分钟,并进行结果汇总统计) 使用说明 前提:p ...

  2. shell脚本——mysql

    很期待,学习shell脚本,减少重复工作 自动安装配置mysql脚本: #/bin/bash LOG_FILE=/home/hadoop1/log/installmysql.log function ...

  3. [shell脚本] mysql服务启动脚本

    服务启动脚本(初始化.启动.登录) #!/bin/bash export PID=/usr/local/nestdb_master/bin/mysqld export PASSWORD=123456 ...

  4. shell脚本 mysql主从

    #!/bin/bash systemctl stop firewalld setenforce user="tom" password=" slave_ipaddr=&q ...

  5. shell脚本修复MySQL主从同步

    发布:thebaby   来源:net     [大 中 小] 分享一例shell脚本,用于修改mysql的主从同步问题,有需要的朋友参考下吧. 一个可以修改mysql主从同步的shell脚本. 例子 ...

  6. Hadoop的shell脚本分析

    你会发现hadoop-daemon.sh用于启动单独的本机节点 而hadoop-daemons.sh 会批量的ssh到别的机器启动 前记: 这些天一直学习hadoop,学习中也遇到了许多的问题,主要是 ...

  7. zabbix3.0.4-agent通过shell脚本获取mysql数据库登陆用户

    zabbix3.0.4获取数据库登陆用户趋势详解 主要思路: 通过zabbix客户端shell脚本mysql命令取出用户表中的数据将结果反馈给zabbix,画出趋势图 1.修改zabbix-agent ...

  8. 常用shell脚本

    [脚本1]打印形状打印等腰三角形.直角三角形.倒直角三角形.菱形 #!/bin/bash # 等腰三角形 read -p "Please input the length: " n ...

  9. 【转】干货分享-100个shell脚本

    本文用于记录学习和日常中使用过的shell脚本 [脚本1]打印形状 打印等腰三角形.直角三角形.倒直角三角形.菱形 #!/bin/bash # 等腰三角形 read -p "Please i ...

  10. 采用OpenReplicator解析MySQL binlog

    Open Replicator是一个用Java编写的MySQL binlog分析程序.Open Replicator 首先连接到MySQL(就像一个普通的MySQL Slave一样),然后接收和分析b ...

随机推荐

  1. python实现圆检测

    目录: (一)霍夫圆检测原理 (二)代码实现 (一)霍夫圆检测原理 (二)代码实现 1 #霍夫圆检测 2 import cv2 as cv 3 import numpy as np 4 5 def d ...

  2. [hdu5379]Mahjong tree

    一棵子树的每一个儿子相当于划分一个区间,同时这些区间一定要存在一个点连续(直接的儿子),因此每一棵树最多只有两个儿子存在子树,并且这两个儿子所分到的区间一定是该区间最左和最右两段,所以ans*=(so ...

  3. negix安装与配置2-反向代理一台

    negix反向代理: 1.实现效果:打开浏览器,输入www.123.com 跳转到linux系统主页面中 2.准备工作tomcat java环境 https://www.cnblogs.com/q13 ...

  4. JdbcTemplate 、Mybatis、ORM 、Druid 、HikariCP 、Hibernate是什么?它们有什么关系?

    JdbcTemplate .Mybatis.ORM .Druid .HikariCP .Hibernate是什么?它们有什么关系? 学完Spring和SpringMVC之后,就急于求成的开始学习起Sp ...

  5. BehaviorTree.CPP行为树BT的选择节点(四)

    Fallback 该节点家族在其他框架中被称为"选择器Selector"或"优先级Priority". 他们的目的是尝试不同的策略,直到找到可行的策略. 它们具 ...

  6. 洛谷 P5469 - [NOI2019] 机器人(区间 dp+拉格朗日插值)

    洛谷题面传送门 神仙题,放在 D1T2 可能略难了一点( 首先显然对于 P 型机器人而言,将它放在 \(i\) 之后它会走到左边第一个严格 \(>a_i\) 的位置,对于 Q 型机器人而言,将它 ...

  7. Redis list操作命令

    rpop命令 用于移除列表的最后一个元素,返回值为移除的元素.当列表不存在时,返回nil. 基本语法: rpop key_name LPOP:移除并返回列表第一个元素 RPOP:移除并返回列表最后一个 ...

  8. 前端1 — HTML — 更新完毕

    1.首先来了解一个东西 -- W3C标准( 全称是:World Wide Web Consortium ) 万维网联盟(外语缩写:W3C)标准不是某一个标准,而是一系列标准的集合 -- 这个其实每天都 ...

  9. 学习java的第九天

    一.今日收获 1.java完全学习手册第二章程序流程控制中的顺序结构与选择结构 2.学习了java中选择的一些语句和关键词 二.今日问题 1.例题验证有错的情况 2.哔哩哔哩教学视频的一些术语不太理解 ...

  10. mysql数据查询语言DQL

    DB(database)数据库:存储数据的'仓库',保存了一系列有组织的数据 DBMS(Database Management System)数据库管理系统:用于创建或管理DB SQL(Structu ...