mysql binlog 統計_對MySQL binlog日志解析,統計每張表的DML次數

想要獲取每天數據庫每張表的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])

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538068.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538068.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538068.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

strapi 開源api 內容管理平臺試用

strapi 是一個開源的api && 內容管理平臺,功能操作起來還是比較方便簡單的。 安裝 使用docker && docker-compose 代碼clonegit clone https://github.com/strapi/strapi-docker && cd strapi-docker 啟動 docker-compose up -d 訪問 首次初…

1.android體系結構介紹

一、Android的介紹 android介紹見百度百科:Android的介紹,度娘把Android介紹的這么清楚,如果谷歌是Android的爹,那度娘就是娘了。 二、Android的架構圖 android系統主要分四層: 從上致下: 1、應用層 2、…

mysql seconds_behind_master_MySQL中的seconds_behind_master的理解

通過show slave status查看到的Seconds_Behind_Master,從字面上來看,他是slave落后master的秒數,一般情況下,也確實這樣,我們可以通過Seconds_Behind_Master數字查看slave是否落后于master,但是在一些環境中…

2.JVM和DVM之間的區別

1、JVM .java----->.class----->.jar 運行在內存的 棧 棧虛擬機 2、DVM .java----->.class------>.dex-----(加上其它資源文件)---->apk 運行在CPU的 寄存器 寄存器虛擬機 ---------------------------------------------------------- 3、DVM與JVM的區…

Node.js模塊以及模塊加載機制

2019獨角獸企業重金招聘Python工程師標準>>> Node.js中的模塊 在Node.js中,以模塊為單位劃分功能,通過一個完整的模塊加載機制使得開發人員可以將應用程序劃分為多個不同的部分。模塊的使用可以提高代碼重用率,提高應用程序的開發…

wordpress支持MySQL5.5_wordpress數據庫版本為5.5以上導出不能在5.5以下的版本導入的問題解決...

自從wordpress4.2版本出現以后,已經可以支持utf8mb4數據編碼,那么如果您的php空間的數據庫版本是mysql5.1的,那么很多站長朋友從mysql5.5導出來再導入到5.1的數據中的時候,那么問題來了,就會報錯Unknown collation ‘u…

i++與++i的區別

代碼: int i1; int ai;//先賦值,然后再自增,它等價于 a i ; i i 1System.out.println("a"a);System.out.println("i"i);System.out.println("---------------");int j1; int bj;//先自增,后賦值…

獲取數據庫名稱dbName

2019獨角獸企業重金招聘Python工程師標準>>> Autowired DataSource ds; connection ds.getConnection(); tring dbName connection.getCatalog(); connection.close(); 轉載于:https://my.oschina.net/u/2351011/blog/1925838

mysql 5.7 密碼過期_mysql5.7 密碼過期了怎么辦

mysql5.7 密碼過期了怎么辦發布時間:2020-05-08 14:11:09來源:億速云閱讀:148作者:三月下文主要給大家帶來mysql5.7 密碼過期了怎么辦,希望這些文字能夠帶給大家實際用處,這也是我編輯mysql5.7 密碼過期了怎…

我的開源項目

Android App 循環訪問網站app app介紹:http://blog.csdn.net/zengmingen/article/details/78016167 開源地址:https://gitee.com/zengmg/VistWeb

初始化bean(二)—— 緩存部分

上一篇博客,講了下spring如何初始化bean的 當然,當時只討論了很簡單的一種情況:初次加載bean時候,并且只考慮了單例。 這篇博客會試著理清楚spring在加載bean的時候的一部分緩存。關于解決循環引用所使用的緩存,可以看…

chkconfig: 2345 20 80

#chkconfig: 2345 20 80 2345表示系統運行級別是2,3,4或者5時都啟動此服務,20,是啟動的優先級,80是關閉的優先級,如果啟動優先級配置的數太小時如0時,則有可能啟動不成功,因為此時可…

android 按鍵上浮動畫_android – 浮動動作按鈕動畫

從Zielony的回答中,我確切地說到了我想要的地方.下面是正確應用效果的代碼.scale_fab_in.xmlandroid:duration"500"android:fromXScale"0"android:fromYScale"0"android:pivotX"50%"android:pivotY"50%"android:toXScale&qu…

性能測試調優篇---未完待續

性能測試調優一:1.首先,看下選測交易的整個走向純系統內部交易:選測交易如果是系統內的交易,每一步請求都和系統交互幾次,訪問了幾個數據庫,訪問了數據庫的那幾張表??該交易走了那幾…

mysql連接idea詳細教程_idea配置連接數據庫的超詳細步驟

學習時,使用IDEA的時候,需要連接Database,連接時遇到了一些小問題,下面記錄一下操作流程以及遇到的問題的解決方法。一、 連接操作簡介:介紹如何創建連接,具體連接某個數據庫的操作流程。1.1 創建連接打開i…

redis單節點安裝

1、下載 redis :https://redis.io/ redis 提供的是 源碼包,需要編譯。 2、Linux下安裝gcc 和 tcl tcl介紹 命令:yum install gcc tcl 3、將redis的源碼包,放到 /usr/local/src 下 tar -zxvf redis-4.0.6.tar.gz 4、安裝redi…

Shell編程—企業生產案例

Linux系統Shell編程—企業生產案例(一) 企業數據庫可以說是重點保護對象啊,沒有之一,數據在當今企業里就是生命線,因此今天就來說一說,如何通過shell腳本來檢查或監控MYSQL數據庫服務是否正常?&…

ManicTime軟件破解

這款軟件用來記錄電腦上程序的運行時間。方便天天用電腦的查看:今天我的時間都去哪兒了? 專業版不免費,而且需要 67 美元。 免費版和專業版的區別 破解補丁和官方軟件下載(截止博文發布,官方最新版本 版本&#xff1…

mysql根據ID的順序查找_求救:mysql 如何根據給定的 ID順序查找結果?

各位大神,現在我遇到了一個難題需要你們的幫助。有下面兩個表post表:文章表。record表:記錄表,用于記錄用戶閱讀順序。record表 根據用戶的閱讀文章順序用一個字段 postid 記錄 post 表的主鍵ID,既 record.postid 的外鍵為 post.i…

DIY—USB學習板設計以及驅動開發

暑假在Intel OTC做訪問學者時,看到公司有兩個小巧的USB設備-溫度計和LED音樂播放器,用于交大學生的Linux Kernel教學中。但看似簡單的這些設備,還是從國外購買而得。因此,從intel回來之后,我就告訴學生能否設計一種USB…