日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

發(fā)布時(shí)間:2025/3/11 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql binlog 统计_对MySQL binlog日志解析,统计每张表的DML次数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

想要獲取每天數(shù)據(jù)庫(kù)每張表的DML的次數(shù),統(tǒng)計(jì)熱度表,可以使用該腳本

# coding:utf-8

# 解析binlog,統(tǒng)計(jì)熱度表,表的DML個(gè)數(shù)

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

# 對(duì)

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

# 對(duì)庫(kù)和表進(jìn)統(tǒng)計(jì)排序

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)

# 收集時(shí)間

print('開(kāi)始時(shí)間: ;', start_time)

print('結(jié)束時(shí)間: ;', stop_time)

# 統(tǒng)計(jì)DML總次數(shù)

print('\nDML總次數(shù): ', insert_count+update_count+delete_count)

# 統(tǒng)計(jì)DML次數(shù)

print(' Insert總次數(shù): ', insert_count)

print(' Delete總次數(shù): ', delete_count)

print(' Update總次數(shù): ', update_count)

# Insert統(tǒng)計(jì)

print('\nInsert 統(tǒng)計(jì): ')

for i in sort_inser_li:

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

# Delete統(tǒng)計(jì)

print('\nDelete 統(tǒng)計(jì): ')

for i in sort_delete_li:

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

# Update統(tǒng)計(jì)

print('\nUpdate 統(tǒng)計(jì): ')

for i in sort_update_li:

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

總結(jié)

以上是生活随笔為你收集整理的mysql binlog 统计_对MySQL binlog日志解析,统计每张表的DML次数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。