在上一篇文章中简单的介绍了使用python-mysql-replication 来解析 MySQL binlog来完成实时统计的业务,当然,在现实的业务中不可能用的那么简单的。 |
今天的目的不是介绍真实的业务场景如何使用 python-mysql-replication,而是推出一枚
工具链接:https://github.com/daiguadaidai/mysql_binlog_stat
(资料图)
在之前我也是使用 @吴炳锡 大神的工具, 因为在了的时候感觉显示的有点生涩因此在他的基础上修改了一些重新展示了, 可是在用的时候还是不尽人意。
具体看之前笔者的文章:http://www.ttlsa.com/mysql/mysql-fields-when-time-split/
大神的工具:https://github.com/wubx/mysql-binlog-statistic
笔者重新展示的工具:https://github.com/daiguadaidai/mysql-binlog-statistic
二话不说直接展示如何使用1、查看帮助[root@centos7 tmp]# python mysql_binlog_stat.py --helpusage: 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 binlogroot@(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.982suser 5m26.080ssys 0m8.958s
分析了2G多的binlog数据花了大概6分钟时间速度,感觉速度还是不行啊 ^_^。
这边说一下为什么不提供 --stop-log-file, --stop-log-pos, --stop-time 参数
主要是因为 pymysqlreplication 的解析如果是没有解析到结尾,它在 master 上创建的链接会一直存在不会消失,需要人工去master kill掉相关的thread. 我问了作者但是并没有得到很好的回应(估计也是我问问题的方式不对吧)
相关问题请看以下链接,(同时希望大家一起来解决一这问题, 来完善以下这个小程序)。
https://github.com/noplay/python-mysql-replication/issues/177#issuecomment-265069799
原文来自:http://www.ttlsa.com/mysql/mysql-table-columns-statistics-python-mysql-replication/
本文地址:https://www.linuxprobe.com/mysql-table-columns-statistics.html
标签:
在上一篇文章中简单的介绍了使用python-mysql-replication来解析MyS...
直播吧5月4日讯在今天凌晨进行的意甲联赛中,罗马客场1-1战平蒙扎。...
IT之家5月3日消息,旅行者2号太空探测器是人类历史上最伟大的科学仪...
“五一”的红河哈尼族彝族自治州蒙自城阳光明媚,蓝花楹开遍大街小...
1、水痘期间,首先要注意的是隔离患者,防止其外出;做好居住环境的...
美联储议息前政府主导的银行营救行动未能让市场安心,加息,金价,议息...
1、世界上知名品牌的镜片的厂家有:日本尼康镜片,日本豪雅镜片,日...
1、向国旗敬礼,是激发爱国志向的精神源泉。2、又是一年国庆至,66...
戴佛斯一个人坐着,仍然忧心忡忡地思考着这场对峙。他的孩子,他那...
当地时间5月1日,泰国公共卫生部疾病控制司发布报告称,在2023年1月...
上中学时认真听课的朋友,可能毕业后仍然记得孔乙己的典故。一个茴...
据西班牙媒体《阿斯报》报道,尽管阿尔巴在对阵奥萨苏纳的比赛中进...
乐亭县气象台2023年05月03日16时12分发布大风蓝色预警信号:预计明...
4家企业北交所上市申请获受理,部分由沪深IPO“转道”而来。
1、圆桌官方出招表(最权威)出品人:水镜龙通用:(+为同时按,-为顺...
金投白银网提供张作霖像银元价格(2023年05月03日),张作霖银元最...
智通财经APP获悉,5月3日,香港银行公会数据显示,港元拆息全线上升...
大侠立志传是一款最近受大家关注的游戏,游戏以宋朝为背景,通过多...
1、中国石油大学(北京)地球科学学院博士。2、讲师。3、硕士生导师...
松花江网,是经国家互联网信息办公室批准的国家一类新闻网站,吉林...
近日,“海洋石油165”在南海北部湾海域涠洲5-7油田区域顺利就位,...
央视网消息(新闻联播):国际货币基金组织5月2日在香港发布最新一...
当地时间5月2日,美国三大股指全线下挫,均跌超1%。美联储从当天开...
我是B站重度用户,在上面经常能够发现一些有趣的人和事。最近我开始...
据微信公众号“呼和浩特市文化旅游广电局”5月2日消息,内蒙古呼和...
《漫长的季节》第10集是分水岭,第11集可以封神,这两集将故事中的...
4月12日晚9点,极氪X发布会刚刚结束,方佳佳就兴奋地在朋友圈同步更...
5月1日,宝武集团旗下宝钢股份与沙特阿拉伯国家石油公司(以下简称...
央视网消息:5月2日是“五一”假期的第四天,假期虽接近尾声,但是...
救援现场位于四川甘孜州德格县马尼干戈镇境内的玉隆拉措景区,海拔4...