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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python统计linux流量,通过Python进行MySQL表信息统计

發(fā)布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python统计linux流量,通过Python进行MySQL表信息统计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

導讀

在上一篇文章中簡單的介紹了使用python-mysql-replication 來解析 MySQL binlog來完成實時統(tǒng)計的業(yè)務,當然,在現(xiàn)實的業(yè)務中不可能用的那么簡單的。

啰哩八說

今天的目的不是介紹真實的業(yè)務場景如何使用 python-mysql-replication,而是推出一枚小工具(筆者通過python-mysql-replication實現(xiàn)的)

在之前我也是使用 @吳炳錫 大神的工具, 因為在了的時候感覺顯示的有點生澀因此在他的基礎上修改了一些重新展示了, 可是在用的時候還是不盡人意。

二話不說直接展示如何使用

1、查看幫助

[root@centos7 tmp]# python mysql_binlog_stat.py --help

usage: mysql_binlog_stat.py [-h] [--host HOST] [--port PORT]

[--username USERNAME] [--password PASSWORD]

[--log-file binlog-file-name]

[--log-pos binlog-file-pos]

[--server-id server-id] [--slave-uuid slave-uuid]

[--blocking False/True] [--start-time start-time]

[--sorted-by insert/update/delete]

Description: The script parse MySQL binlog and statistic column.

optional arguments:

-h, --help show this help message and exit

--host HOST Connect MySQL host

--port PORT Connect MySQL port

--username USERNAME Connect MySQL username

--password PASSWORD Connect MySQL password

--log-file binlog-file-name

Specify a binlog name

--log-pos binlog-file-pos

Specify a binlog file pos

--server-id server-id

Specify a slave server server-id

--slave-uuid slave-uuid

Specify a slave server uuid

--blocking False/True

Specify is bloking and parse, default False

--start-time start-time

Specify is start parse timestamp, default None,

example: 2016-11-01 00:00:00

--sorted-by insert/update/delete

Specify show statistic sort by, default: insert

主要參數(shù)介紹:

--log-file:binlog 文件名稱

--log-pos:?binlog 文件位置(從哪個位置開始解析)

--blocking:?是否需要使用阻塞的方式進行解析始終為 False 就好(默認就是False)

--start-time:從什么時間開始解析

--sorted-by:?展示的結果通過什么來排序, 默認是通過 insert 的行數(shù)的多少降序排列, 設置的值有 insert/update/delete

2、解析 MySQL binlog

root@(none) 09:17:12>show binary logs;

------------------ -----------

| Log_name | File_size |

------------------ -----------

| mysql-bin.000012 | 437066170 |

| mysql-bin.000013 | 536884582 |

| mysql-bin.000014 | 537032563 |

| mysql-bin.000015 | 536950457 |

| mysql-bin.000016 | 87791004 |

| mysql-bin.000017 | 143 |

| mysql-bin.000018 | 143 |

| mysql-bin.000019 | 143 |

| mysql-bin.000020 | 143 |

| mysql-bin.000021 | 1426 |

------------------ -----------

10 rows in set (0.01 sec)

# 使用命令

[root@centos7 tmp]# time python mysql_binlog_stat.py --log-file=mysql-bin.000012 --log-pos=120 --username=root --password=root --sorted-by='insert'

[

{

"app_db.business_item_sku_detail": {

"row_insert_count": {

"market_price": 273453,

"sku_id": 273453,

"weight": 273453

},

"table_dml_count": {

"insert": 273453,

"update": 0,

"delete": 0

},

"row_update_count": {}

}

},

{

"app_db.business_item_sku_property": {

"row_insert_count": {

"sku_id": 273112,

"created": 273112,

"property_value_id": 273112,

"business_item_id": 273112,

"record_id": 273112,

"property_id": 273112

},

"table_dml_count": {

"insert": 273112,

"update": 0,

"delete": 0

},

"row_update_count": {}

}

},

{

"app_db.business_item_pic": {

"row_insert_count": {

"created": 270993,

"business_item_id": 270993,

"pic_id": 270993,

"pic_no": 270993,

"tmall_shop_id": 270993,

"pic_url": 270993

},

"table_dml_count": {

"insert": 270993,

"update": 0,

"delete": 0

},

"row_update_count": {}

}

},

{

"app_db.business_item": {

"row_insert_count": {

"guide_commission": 264803,

"commission_type": 264803,

"pstatus": 264803

},

"table_dml_count": {

"insert": 264803,

"update": 0,

"delete": 0

},

"row_update_count": {}

}

},

{

"test.t_binlog_event": {

"row_insert_count": {

"auto_id": 5926,

"dml_sql": 5926,

"dml_start_time": 5926,

"dml_end_time": 5926,

"start_log_pos": 5926,

"db_name": 5926,

"binlog_name": 5926,

"undo_sql": 5926,

"table_name": 5926,

"end_log_pos": 5926

},

"table_dml_count": {

"insert": 5926,

"update": 0,

"delete": 4017

},

"row_update_count": {}

}

},

{

"test.ord_order": {

"row_insert_count": {

"order_id": 184,

"pay_type": 181,

"amount": 184,

"create_time": 184,

"serial_num": 181

},

"table_dml_count": {

"insert": 184,

"update": 0,

"delete": 0

},

"row_update_count": {}

}

},

{

"test.t1": {

"row_insert_count": {

"id": 7,

"name": 7

},

"table_dml_count": {

"insert": 7,

"update": 2,

"delete": 2

},

"row_update_count": {

"name": 2

}

}

},

{

"test.area": {

"row_insert_count": {},

"table_dml_count": {

"insert": 0,

"update": 0,

"delete": 0

},

"row_update_count": {}

}

}

]

real 5m42.982s

user 5m26.080s

sys 0m8.958s

分析了2G多的binlog數(shù)據(jù)花了大概6分鐘時間速度,感覺速度還是不行啊 ^_^。

這邊說一下為什么不提供 --stop-log-file, --stop-log-pos, --stop-time 參數(shù)

主要是因為 pymysqlreplication 的解析如果是沒有解析到結尾,它在 master 上創(chuàng)建的鏈接會一直存在不會消失,需要人工去master kill掉相關的thread. 我問了作者但是并沒有得到很好的回應(估計也是我問問題的方式不對吧)

相關問題請看以下鏈接,(同時希望大家一起來解決一這問題, 來完善以下這個小程序)。

總結

以上是生活随笔為你收集整理的python统计linux流量,通过Python进行MySQL表信息统计的全部內容,希望文章能夠幫你解決所遇到的問題。

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