想要获取每天数据库每张表的DML的次数,统计热度表,可以使用该脚本

# coding:utf-8

# 解析binlog,统计热度表,表的DML个数

import sys

import os

# mysqlbinlog解析binlog日志

def binlog_output():

binlog_file = sys.argv[1]

file_num = binlog_file.split('.')[1]

binlog_log = 'binlog_%s.log' % file_num

os.system('/usr/local/mysql5637/mysql/bin/mysqlbinlog -v --base64-output=decode-rows %s > %s' %(binlog_file, binlog_log))

return binlog_log

# 对

def binlog_parse(binlog_log):

delete_count = 0

update_count = 0

insert_count = 0

update_li = []

insert_li = []

delete_li = []

stop_time_li = []

binlog_f = open(binlog_log, 'r',encoding='utf-8')

for line in binlog_f.readlines():

if line.startswith('### INSERT INTO'):

insert_count += 1

insert_li.append(line[16:].replace('`', '').strip())

if line.startswith('### UPDATE'):

update_count += 1

update_li.append(line[11:].replace('`', '').strip())

if line.startswith('### DELETE FROM'):

delete_count += 1

delete_li.append(line[16:].replace('`','').strip())

if 'Start: binlog' in line:

start_time = line.split('server')[0].replace('#', '')

if 'end_log_pos' in line:

stop_time_li.append(line)

binlog_f.close()

stop_time = stop_time_li[-1].split('server')[0].replace('#', '')

start_time = '20' + start_time[:2] + '-' + start_time[2:4] + '-' + start_time[4:]

stop_time = '20' + stop_time[:2] + '-' + stop_time[2:4] + '-' + stop_time[4:]

return delete_count,update_count,insert_count,update_li,insert_li,delete_li,start_time,stop_time

# 对库和表进统计排序

def DbTableCount(arr):

result = {}

for i in set(arr):

result[i] = arr.count(i)

sort_li = sorted(result.items(), key=lambda x: x[1], reverse=True)

return sort_li

if __name__ == '__main__':

binlog_log = binlog_output()

delete_count, update_count, insert_count, update_li, insert_li, delete_li, start_time,stop_time= binlog_parse(binlog_log)

sort_update_li = DbTableCount(delete_li)

sort_inser_li = DbTableCount(insert_li)

sort_delete_li = DbTableCount(update_li)

# 删除解析日志

os.system('rm -f %s' % binlog_log)

# 收集时间

print('开始时间: ;', start_time)

print('结束时间: ;', stop_time)

# 统计DML总次数

print('\nDML总次数: ', insert_count+update_count+delete_count)

# 统计DML次数

print(' Insert总次数: ', insert_count)

print(' Delete总次数: ', delete_count)

print(' Update总次数: ', update_count)

# Insert统计

print('\nInsert 统计: ')

for i in sort_inser_li:

print(' DB.Table:', i[0], ', Count:', i[1])

# Delete统计

print('\nDelete 统计: ')

for i in sort_delete_li:

print(' DB.Table:', i[0], ', Count:', i[1])

# Update统计

print('\nUpdate 统计: ')

for i in sort_update_li:

print(' DB.Table:', i[0], ', Count:', i[1])

mysql binlog 统计_对MySQL binlog日志解析,统计每张表的DML次数相关推荐

  1. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  2. java 解析hiveserver2日志 解析HiveSQL 获取表的使用次数 热度

    java 解析hiveserver2日志 解析HiveSQL 获取表的使用次数 热度 首先逐行读取hiveserver2日志 日志里每个sql之前都会包含Executing command关键字 故先 ...

  3. mysql binlog c++_关于MySQL的日志管理(binlog)

    一.查看binlog的启用状态 最常用的mysql版本是5.7,默认不开启binlog,可以在登录mysql之后,利用以下命令查看当前的binlog启用状态: mysql > show vari ...

  4. mysql binlog 备份_做好mysql运维,必须熟练掌握备份和恢复,实战一次不行多来几次...

    原文:https://www.toutiao.com/i6855460778359816715/ 平台:头条 作者:程序员不就是0和1 一. 备份恢复策略 进行备份或恢复操作时需要考虑一些因素: 1. ...

  5. mysql binlog跟踪_在MySQL中使用init-connect与binlog来实现用户操作追踪记录

    在MySQL中使用init-connect与binlog来实现用户操作追踪记录 分类: MySQL 前言: 测试环境莫名其妙有几条重要数据被删除了,由于在binlog里面只看到是公用账号删除的,无法查 ...

  6. shell 获取 mysql 行数_一个Shell小脚本精准统计Mysql每张表的行数实现

    前言 对于开发或者运维人员来说,Mysql数据库每张表的数量肯定是要了解下,有助于我们清理无用数据或者了解哪张表比较占用空间. 另外多次统计表的行数,还能发现Mysql表的增量情况,能够预测表未来会有 ...

  7. mysql 写磁盘_图解MySQL | [原理解析] MySQL insert 语句的磁盘写入之旅

    作者及简介: 黄 炎,爱可生首席技术官: 王 悦,爱可生研发团队成员,负责数据库管理平台相关项目的开发和故障排查,好奇 MySQL 技术原理及各类数据库实现方案. 本文来源:转载自公众号-图解 MyS ...

  8. mysql 关闭主从_取消mysql主从复制关系

    mysql主从复制中,需要将主从复制关系清除,需要取消其从库角色.这可通过执行RESET SLAVE ALL清除从库的同步复制信息.包括连接信息和二进制文件名.位置.从库上执行这个命令后,使用show ...

  9. mysql ab复制_实现mysql的ab复制(a-b-b,a-b-c)

    实验环境准备: 三台虚拟机,IP分别为master: 192.168.2.1   slave:192.168.2.2   slave1:192.168.2.3 将192.168.2.1的主机做为mys ...

最新文章

  1. java api 框架_java常用对象API之集合框架
  2. Redis数据库搭建集群(集群概念、redis集群、搭建集群(配置机器1、2、创建集群、数据操作验证)、Python与redis集群交互)
  3. YUM(Yellow gog Updater Modifie)服务器的配置
  4. JS打印页面指定区域
  5. jetson nano 摄像头购买
  6. springboot整合JWT使用
  7. 欢乐纪中某B组赛【2019.1.26】
  8. 了解使用JavaScript进行面向对象编程的基础(并增强您的编码…
  9. javascript递归函数问题
  10. extjs4 冻结列_extjs4 事件处理
  11. [Python] L1-012. 计算指数-PAT团体程序设计天梯赛GPLT
  12. 25岁!零基础想转行做软件测试,可以吗?晚是不晚!
  13. ios键盘横屏_平板电脑就只能追剧玩游戏?看这款外设键盘如何让iPad爱上办公...
  14. Android 开发错误集锦
  15. Windows11 WSL Ubuntu1804 配置指南
  16. 软件需求规格说明书,概要设计说明书,详细设计说明书(文档)
  17. 设计一个程序,其中有三个类CBank,BBank,GBank,分别为中国银行类…………
  18. Linux性能优化之内存(一)
  19. java动物继承_java 编码实现动物世界的继承关系:动物(Animal)属性:名称(name)具有行为:吃(eat)、睡觉(sleep)...
  20. 数据分析算法-决策树(上)-课堂学习笔记

热门文章

  1. idea html 错误提示,Idea 代码编辑错误不飘红提示
  2. java 审计 漏洞函数_Java Web代码审计流程与漏洞函数
  3. 西门子array数据类型_西门子S71200之间以太网通信(图文)
  4. 基于RobotFramework实现自动化测试
  5. java json和对象互相装换
  6. Python 命令行传参
  7. [分布式训练] 单机多卡的正确打开方式:理论基础
  8. redis哨兵模式没有切换主机_Redis哨兵(Sentinel)模式
  9. 插入空行_如何一键插入表格空行,这个方法才最高级!
  10. python plt.plot bar 设置绘图尺寸大小