查看Binlog相关信息

##=====================================##
## 在MySQL内部查看binlog文件列表 ##
SHOW BINARY LOGS; ##=====================================##
##查看某个binglog文件中特定pos的操作
SHOW BINLOG EVENTS IN 'mysql-bin.000011' FROM 4742885 LIMIT 15; ##=====================================##
## 使用mysqlbinlog查看binlog ##
## 按时间过滤--start-datetime --stop-datetime,过滤时间格式为'2004-12-25 11:25:56'
## 按位置点过滤--start-position --stop-position,如果不能提供准确的pos值,则会报错
## 按照GTID过滤--include-gtids include-gtids
/export/servers/mysql/bin/mysqlbinlog -vv /export/data/mysql/data/mysql-bin.008735 /export/servers/mysql/bin/mysqlbinlog -vv /export/data/mysql/data/mysql-bin.008735 --start-datetime='2017-01-01 00:00:00' --stop-datetime='2017-01-02 00:00:00' /export/servers/mysql/bin/mysqlbinlog -vv /export/data/mysql/data/mysql-bin.008735 --start-position=194 --stop-position=201 /export/servers/mysql/bin/mysqlbinlog -vv /export/data/mysql/data/mysql-bin.008735 --include-gtids="2aa60248-d8cf-11e8-a5c5-fa1622b12630:22652-22659" ##=====================================##
## 查看binlog 文件大小和最后修改时间 ##
ll -h --time-style='+%Y-%m-%d %H:%M:%S' /export/data/mysql/data/mysql-bin*

解析Binlog获取操作频率:

/export/servers/mysql/bin/mysqlbinlog --no-defaults --base64-output=decode-rows -vvv mysql-bin.001282 \
| awk '/###/ {if($0~/UPDATE|INSERT|SELECT/)count[$2" "$NF]++}END{for(i in count) print i,"\t",count[i]}' \
| column -t | sort -k3nr

对解析出的SQL文件进行解析,计算每张表操作次数和每秒操作次数:

1、先使用mysqlbinlog解析文件:

/export/servers/mysql/bin/mysqlbinlog --no-defaults --base64-output=decode-rows -vvv mysql-bin.001282 >/tmp/001282.sql

2、修改下面python文件中main部分的sql文件地址,然后执行

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# =============================================================================
# FileName:
# Desc:
# Author:
# Email:
# HomePage:
# Version:
# LastChange:
# History:
# =============================================================================
import os def write_file(file_path, file_content):
file_handler = open(file_path, "w")
file_handler.write(file_content)
file_handler.close() def get_table_summary(dump_sql_path):
file_handler = open(dump_sql_path)
table_dict = dict()
for file_line in file_handler:
if file_line.find("Table_map: ") > 0:
start_index = file_line.index("Table_map:") + len("Table_map: ")
end_index = file_line.index("mapped to", start_index)
table_name = file_line[start_index:end_index].strip()
if table_name in table_dict.keys():
table_dict[table_name] += 1
else:
table_dict[table_name] = 1 result_list = list()
result_list.append("##=============按照表访问次数排序====================##")
sorted_table_dict = sorted(table_dict.items(), key=lambda x: int(x[1]), reverse=True)
for item in sorted_table_dict:
result_list.append("{0}======================{1}".format(item[0], item[1]))
result_list.append("##=============================================##")
result_file = os.path.join(os.path.dirname(__file__), "binlog_table_summary.txt")
write_file(result_file, "\n".join(result_list)) def get_binlog_time_summary(dump_sql_path):
file_handler = open(dump_sql_path)
datetime_dict = dict()
for file_line in file_handler:
if file_line.find("Table_map: ") > 0:
start_index = 1
end_index = file_line.index("server id", start_index)
current_time = file_line[start_index:end_index].strip()
if current_time in datetime_dict.keys():
datetime_dict[current_time] += 1
else:
datetime_dict[current_time] = 1
result_list = list()
result_list.append("##=============按照时间访问排序====================##")
sorted_time_dict = sorted(datetime_dict.items(), key=lambda x: x[0], reverse=True)
for item in sorted_time_dict:
result_list.append("{0}======================{1}".format(item[0], item[1]))
result_list.append("##=============================================##")
result_file = os.path.join(os.path.dirname(__file__), "binlog_time_summary.txt")
write_file(result_file, "\n".join(result_list)) if __name__ == '__main__':
sql_path = "/tmp/001282.sql"
print("正在解析数据文件{0},获取每表访问次数".format(sql_path))
get_table_summary(dump_sql_path=sql_path)
print("正在解析数据文件{0},获取每秒访问次数".format(sql_path))
get_binlog_time_summary(dump_sql_path=sql_path)
print("解析完成")

MySQL Binlog信息查看的更多相关文章

  1. mysql 分区信息查看

    select partition_name part,partition_expression expr,partition_description descr,table_rows from INF ...

  2. 使用cygwin中的awk工具进行mysql binlog日志查看[利刃篇]

    linux工具确实强悍,然而作为没有linux机器使用权以及开发没有使用linux进行的人,有时想用一些命令确实不方便,所以,才去试着用用cygwin,一款在windows平台上运行的类UNIX模拟环 ...

  3. mysql日志信息查看与设置mysql-bin

    查看 sql查询记录  日志是否开启 SHOW GLOBAL VARIABLES LIKE '%general_log%' 二进制日志 是否开启 SHOW GLOBAL VARIABLES LIKE ...

  4. mysql binlog日志查看及解码

    mysql bin log日志导出 mysqlbinlog  mysql-bin.000005 > /home/17bin.log 需要添加参数(--base64-output=decode-r ...

  5. MySql Binlog 说明 & Canal 集成MySql的更新异常说明 & MySql Binlog 常用命令汇总

    文章来源于本人的印象笔记,如出现格式问题可访问该链接查看原文 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 目录 背景介绍 开启MySq ...

  6. MySQL binlog 自动清理脚本

    # vim /data/scripts/delete_mysql_binlog.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  7. 关于MySQL相关的查看显示信息:

    关于MySQL相关的查看显示信息: 数据库范围: 一.查看所有的数据库:(仅仅是看数据库数量与名字) mysql> show databases; 二.查看某个数据库的创建信息:(主要看数据库的 ...

  8. Window 下mysql binlog开启及查看,mysqlbinlog

    查看是否开启了binlog: win+r => cmd => 连接mysql=>show variables like 'log_%'; mysql> show variabl ...

  9. CentOS6.8下MySQL数据库版本信息查看

    方法1:使用mysql -v命令查看: [root@yeebian mysql]# mysql -V mysql Ver 14.14 Distrib 5.1.73, for redhat-linux- ...

随机推荐

  1. Java 面向对象的三大特性之一 继承

    继承: Java是继承的三大特性之一,是Java中实现代码重用的手段之一 将重复的代码抽取到父类中继承的有点或者现实 优点: 方便修改代码 减少代码量 Java中继承的语法: 修饰符 SubClass ...

  2. 四. Python基础(4)--语法

    四. Python基础(4)--语法 1 ● 比较几种实现循环的代码 i = 1 sum = 0 while i <= 10: # 循环10-1+1=10次     sum += i     i ...

  3. CPU使用率过高分析方法

    项目过程中发现,应用服务器经常会出现CPU使用率较高的情况,需要定位出具体代码问题. 1.用top命令,根据CPU使用率排序,找出消耗cpu最高的进程 2.找出该进程下消耗CPU最高的线程(命令:to ...

  4. windows文件映射

    0x01 使用文件映射实现共享内存. 用内存映射文件实现进程间的通讯:Windows中的内存映射文件的机制为我们高效地操作文件提供了一种途径,它允许我们在进程中保留一段内存区域,把硬盘或页文件上的目标 ...

  5. CentOS7安装cratedb

    crate: 下载: https://crate.io/download/thank-you/?download=tar crash: 下载: https://crate.io/docs/client ...

  6. mabatis学习(四)----解决字段名与实体类属性名不同的冲突

    在项目开发中,数据库中的字段名不一定和实体类的类名完全相同(当然大小写忽略),那么就可以在sql映射文件中解决此问题 一.创建需要的数据库和表 编写sql脚本,在navicat for mysql中执 ...

  7. 强化学习4-时序差分TD

    之前讲到强化学习在不基于模型时可以用蒙特卡罗方法求解,但是蒙特卡罗方法需要在每次采样时生产完整序列,而在现实中,我们很可能无法生成完整序列,那么又该如何解决这类强化学习问题呢? 由贝尔曼方程 vπ(s ...

  8. spingmvc 访问静态文件,比如css,img等

    这里我来引用一段别人的原话 url-pattern有5种配置模式: (1)/xxx:完全匹配/xxx的路径 (2)/xxx/*:匹配以/xxx开头的路径,请求中必须包含xxx. (3)/*:匹配/下的 ...

  9. <kafka><应用场景><Kafka VS Flume>

    前言 最近在搭一个离线Hadoop + 实时SparkStreaming的日志处理系统,然后发现基本上网上的这种系统都集成了kafka. 自己对kafka有一点点的认识,之前看过官网文档,用过一次,就 ...

  10. rgba 和 opacity 的对比.

    rgba 中 的 a  指的是透明度: 1. rgba 的 设置的 透明度 不会被子级 元素继承;    opacity 设置的透明度会被子级元素继承 . 因此 ,有时候 使用 rgba 会比 opa ...