a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 學(xué)院 > 操作系統(tǒng) > 正文

通過Python進(jìn)行MySQL表信息統(tǒng)計(jì)

2024-06-28 16:00:02
字體:
供稿:網(wǎng)友

導(dǎo)讀在上一篇文章中簡單的介紹了使用python-MySQL-replication 來解析 MySQL binlog來完成實(shí)時(shí)統(tǒng)計(jì)的業(yè)務(wù),當(dāng)然,在現(xiàn)實(shí)的業(yè)務(wù)中不可能用的那么簡單的。
啰哩八說

今天的目的不是介紹真實(shí)的業(yè)務(wù)場景如何使用 python-mysql-replication,而是推出一枚<MySQL表信息統(tǒng)計(jì)>小工具(筆者通過python-mysql-replication實(shí)現(xiàn)的)

工具鏈接: https://github.com/daiguadaidai/mysql_binlog_stat

在之前我也是使用 @吳炳錫 大神的工具, 因?yàn)樵诹说臅r(shí)候感覺顯示的有點(diǎn)生澀因此在他的基礎(chǔ)上修改了一些重新展示了, 可是在用的時(shí)候還是不盡人意。

具體看之前筆者的文章: 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

主要參數(shù)介紹:

--log-file: binlog 文件名稱

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

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

--start-time: 從什么時(shí)間開始解析

--sorted-by: 展示的結(jié)果通過什么來排序, 默認(rèn)是通過 insert 的行數(shù)的多少降序排列, 設(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.982suser    5m26.080ssys     0m8.958s

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

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

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

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

本文

免費(fèi)提供最新linux技術(shù)教程書籍,為開源技術(shù)愛好者努力做得更多更好,開源站點(diǎn):http://www.linuxprobe.com/


上一篇:awk RS ORS

下一篇:NTP時(shí)間同步

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 色噜噜视频 | 久久久国产一区二区三区四区小说 | 亚洲 欧美 日韩在线 | 久久久久久91 | 中文字幕欧美日韩一区 | 日韩国产欧美一区 | 日韩一级淫片 | 在线免费观看一区 | 日韩精品一区二区三区在线 | 亚洲人体在线 | a一级片在线观看 | 成人激情视频 | 久久久久久av | 精品一区二区三区在线观看 | 日韩精品视频在线观看网站 | 亚洲精品成人av | 成人综合区 | 欧美小视频在线观看 | 成人aaaa| 成人网18免费网站 | www.久久久| 欧美精品在线视频 | 天天澡天天狠天天天做 | 日韩色综合 | 欧美久久一区二区 | 黄色在线网站 | 91精产国品一二三区在线观看 | heyzo在线观看 | 91爱爱 | 91精品国产自产91精品 | 自拍偷拍欧美日韩 | 欧美一级免费观看 | 91久久久www播放日本观看 | 日韩专区一区二区三区 | 在线播放www | 日韩精品一区二区三区在线观看 | 日韩国产精品视频 | 色噜噜狠狠狠综合曰曰曰88av | 性生生活大片免费看视频 | 日韩在线不卡视频 | 能免费看的av |