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

news/2024/7/4 7:46:01

3b0893ff36d005d66ad43ca319b59c1b.png

导读

在上一篇文章中简单的介绍了使用python-mysql-replication 来解析 MySQL binlog来完成实时统计的业务,当然,在现实的业务中不可能用的那么简单的。

啰哩八说

今天的目的不是介绍真实的业务场景如何使用 python-mysql-replication,而是推出一枚小工具(笔者通过python-mysql-replication实现的)

在之前我也是使用 @吴炳锡 大神的工具, 因为在了的时候感觉显示的有点生涩因此在他的基础上修改了一些重新展示了, 可是在用的时候还是不尽人意。

二话不说直接展示如何使用

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

主要参数介绍:

--log-file:binlog 文件名称

--log-pos: binlog 文件位置(从哪个位置开始解析)

--blocking: 是否需要使用阻塞的方式进行解析始终为 False 就好(默认就是False)

--start-time:从什么时间开始解析

--sorted-by: 展示的结果通过什么来排序, 默认是通过 insert 的行数的多少降序排列, 设置的值有 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数据花了大概6分钟时间速度,感觉速度还是不行啊 ^_^。

这边说一下为什么不提供 --stop-log-file, --stop-log-pos, --stop-time 参数

主要是因为 pymysqlreplication 的解析如果是没有解析到结尾,它在 master 上创建的链接会一直存在不会消失,需要人工去master kill掉相关的thread. 我问了作者但是并没有得到很好的回应(估计也是我问问题的方式不对吧)

相关问题请看以下链接,(同时希望大家一起来解决一这问题, 来完善以下这个小程序)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pgtn.cn/news/15042.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

OC实用转换model的工具

OC实用转换model的工具 说明 这是本人写的一个专门用来将json数据直接转换生成Model文件的工具,目的是为了让你从写Model文件的繁琐过程中解脱出来,提升效率以及减少出错的几率,工具的特点如下: 1. 用组合设计模式处理树形数据结构(非线性数据结构) 2. 在调试台中处理生成Model…

jQuery-1.9.1源码分析系列(四) 缓存系统

先前在分析Sizzle的时候分析到Sizzle有自己的缓存机制,点击这里查看。不过Sizzle的缓存只是对内使用的(内部自己存,自己取)。接下来分析jQuery可以对外使用的缓存(可存可取)。 首先需要明白jQuery缓存需要解…

linux双物理机weblogic集群,linux下weblogic多机器集群部署要点

weblogic在部署单台物理的多节点服务器(受管服务器)集群时候,只要根据提示下一步下一步都能完成。最近帮测试部部署一个简单的双物理机weblogic集群(下简称多机集群)1、在部署多机集群时,若希望使用weblogicconsole上启动停止服务器就会涉及到nodemanage…

转 小辉_Ray CORS(跨域资源共享)

前言:上一篇文章在写如何使用JSONP实现跨域请求的时候,偶然间提到CORS,即Cross-Origin Resource Sharing(跨域资源共享)。虽然前些天也看了一下CORS相关的文章,但是今天兴趣一来还是亲自地写篇博客来研究一…

java timer.schedule如何控制执行次数_Java 分布式任务调度平台:PowerJob 快速开始+配置详解...

本文适合有 Java 基础知识的人群作者:HelloGitHub-Salieri引言HelloGitHub 推出的《讲解开源项目》[1]系列。项目地址:https://github.com/KFCFans/PowerJobPowerJob 的设计目标为企业级的分布式任务调度平台,即成为公司内部的调度中间件。整…

kali linux samba,Kali Linux 渗透测试:SMB、SMTP扫描工具(14)

一、SMB扫描工具SMB(Server Message Block)协议,服务消息块协议。最开始是用于微软的一种消息传输协议,因为颇受欢迎,现在已经成为跨平台的一种消息传输协议。同时也是微软历史上出现安全问题最多的协议。它的实现复杂,并且默认在…

.net new一个类为什么报空指针_谈谈.NET对象生命周期

不用程序员操心的堆 — 托管堆程序在计算机上跑着,就难免会占用内存资源来存储在程序运行过程中的数据,我们按照内存资源的存取方式将内存划分为堆内存和栈内存。栈内存通常使用的场景是:对存取速度要求较高且数据量不大。典型的栈内存使用的…

kvm上添加万兆网卡_部署kvm(二)

6.管理KVM虚拟机virsh list//查看 正在运行virsh list --all//查看所有id 名称 状态centos7.3 runningvirsh start 名字 //启动virsh shutdown 名字 //关机virsh destroy 名字 //强制关机virsh autostart 名字 //自动启动virsh suspend 名字 //挂起virsh resume 名字 //恢复vir…