CN111459905A - MySQL数据库监控脚本的实现方法及系统 - Google Patents

MySQL数据库监控脚本的实现方法及系统 Download PDF

Info

Publication number
CN111459905A
CN111459905A CN202010131496.1A CN202010131496A CN111459905A CN 111459905 A CN111459905 A CN 111459905A CN 202010131496 A CN202010131496 A CN 202010131496A CN 111459905 A CN111459905 A CN 111459905A
Authority
CN
China
Prior art keywords
value
state
last time
python
formula
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010131496.1A
Other languages
English (en)
Inventor
金家芳
李宁
许爱琪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vision Credit Financial Technology Co ltd
Original Assignee
Vision Credit Financial Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Vision Credit Financial Technology Co ltd filed Critical Vision Credit Financial Technology Co ltd
Priority to CN202010131496.1A priority Critical patent/CN111459905A/zh
Publication of CN111459905A publication Critical patent/CN111459905A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Computational Linguistics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种MySQL数据库监控脚本的实现方法及系统,其中,方法包括如下步骤:S1用于编写Python监控脚本的步骤;S2用于上传所述Python监控脚本,并进行配置的步骤;S3用于修改所述Python监控脚本的执行权限的步骤;S4用于执行所述述Python监控脚本的步骤;S5用于查看上述Python监控脚本的运行结果,并将其执行结果进行保存或下载的步骤。这样,本发明提供方法及系统是针对当前情况下兼容性差,安装繁琐,操作维护过程复杂,跨平台移植性低,跨系统版本较少的缺陷,提供一种多平台支持,安装简单,维护容易,跨系统版本较多的MySQL数据库监控脚本的实现方法及系统。

Description

MySQL数据库监控脚本的实现方法及系统
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种MySQL数据库监控脚本的实现方法及系统方法及系统。
背景技术
在当前技术领域中,MySQL官方并未自带监控管理模块,用于简单配置实现监控MySQL运行状态的目的。当然,MySQL咨询公司Percona提供的Percona Toolkit工具虽然功能很强大,但涉及操作系统版本和数据库版本的兼容性问题,安装步骤繁琐,而且操作维护过程也相对复杂,目前也做不到通过单个脚本来监控MySQL数据库。另外,MySQL数据库主流是安装在Linux环境中,但不排除在windows、aix、mac等环境安装MySQL数据库的情况。常用监控产品可能只支持其中的部分平台,其跨平台移植可能性较低。
发明内容
本发明的目的是提供一种MySQL数据库监控脚本的实现方法及系统。
本发明提供了一种MySQL数据库监控脚本的实现方法,包括如下步骤:S1用于编写Python监控脚本的步骤;S2用于上传所述Python监控脚本,并进行配置的步骤;S3用于修改所述Python监控脚本的执行权限的步骤;S4用于执行所述述Python监控脚本的步骤;S5用于查看上述Python监控脚本的运行结果,并将其执行结果进行保存或下载的步骤。
所述S1用于编写Python监控脚本的步骤包括:S100用于加载脚本中用到的Python监控脚本,并判断是否加载成功,如是,执行步骤S101;否则执行步骤S110;S101用于调用采集脚本的步骤;S102用于读取my.cnf文件中数据配置信息,包括MySQL的端口号、安装目录、数据目录、套接字文件以及最大连接数,并判断是否读取成功,如是,执行步骤S103;否则执行步骤S123;S103用于获取全局状态变量,系统变量,复制状态变量,从库对应主库状态变量值的步骤;S104用于依次获取Key_buffer_read_hits读取命中率、Key_buffer_write_hits写入命中率、Key_buffer_used_pct重复使用率、Innodb_buffer_pool_hits命中率、Qcache_hits查询缓存命中率、Open_tables_pct打开表的百分率、Opened_tables打开表数、Thread_cache_hits命中率、QPS、TPS、Innodb_row_lock_current_waits行锁数、Innodb_row_lock_time_avg平均等待时间、Slow_queries慢查询量、Threads_connected应用连接数、Com_select次数、Com_update次数、Com_delete次数以及Com_insert次数进行查询的步骤;S105用于获取上一次KEY_READS、读请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_read_hits的值,公式是
Figure BDA0002395881960000011
的步骤;S106用于获取上一次KEY_WRITES、写请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_write_hits的值,公式是
Figure BDA0002395881960000021
的步骤;S107用于计算Key_buffer_used_pct的值,公式是
Figure BDA0002395881960000022
的步骤;S108用于计算Innodb_buffer_pool_hits的值,公式是
Figure BDA0002395881960000023
的步骤;S109用于计算Qcache_hits的值,公式是
Figure BDA0002395881960000024
的步骤;S110用于计算Open_tables_pct的值,公式是
Figure BDA0002395881960000025
的步骤;S111用于计算Opened_tables的值,公式是
Figure BDA0002395881960000026
的步骤;S112用于获取上一次数据库的连接数、线程创建数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Thread_cache_hits的值,公式是
Figure BDA0002395881960000027
的步骤;S113用于获取上一次数据库的查询数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算QPS的值,公式是
Figure BDA0002395881960000028
的步骤;S114用于获取上一次数据库的提交数、回滚数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算TPS的值,公式是
Figure BDA0002395881960000029
的步骤;S115用于获取上一次数据库执行多少次select语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_select的值,公式是
Figure BDA00023958819600000210
的步骤;S116用于获取上一次数据库执行多少次update语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_update的值,公式是
Figure BDA00023958819600000211
的步骤;S117用于获取上一次数据库执行多少次delete语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_delete的值,公式是
Figure BDA00023958819600000212
的步骤;S118用于获取上一次数据库执行多少次insert语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_insert的值,公式是
Figure BDA00023958819600000213
的步骤;S119用于将上述计算变量数值并插入mydb的db_status表的步骤;S120用于进行MySQL数据库中的长查询,查询当前数据执行时间超过10分钟的会话,并将结果保存到slow_query_sql变量的步骤;S121用于将S105至S120计算结果以json格式输出到文本文件的步骤;S122用于将全局状态变量值写入上一次db状态数值文件的步骤;S123用于结束Python监控脚本的编写的步骤。所述S2用于上传所述Python监控脚本,并进行配置的步骤是将所述Python监控脚本上传到运行目录。所述S4用于执行所述述Python监控脚本的步骤是按生产环境要求,通过Crontab定时执行上述Python监控脚本查看当前MySQL数据库的状态。
本发明提供了一种MySQL数据库监控脚本的实现系统,包括:用于编写Python监控脚本的模块;用于上传所述Python监控脚本,并进行配置的模块;用于修改所述Python监控脚本的执行权限的模块;用于执行所述述Python监控脚本的模块;用于查看上述Python监控脚本的运行结果,并将其执行结果进行保存或下载的模块。
所述用于编写Python监控脚本的模块包括:用于加载脚本中用到的Python监控脚本中,并判断是否加载成功,如是,执行用于调用采集脚本的子模块;否则执行用于计算Open_tables_pct的值,公式是
Figure BDA0002395881960000031
的子模块;用于调用采集脚本的模块;用于读取my.cnf文件中数据配置信息,包括MySQL的端口号、安装目录、数据目录、套接字文件以及最大连接数,并判断是否读取成功,如是,执行用于获取全局状态变量,系统变量,复制状态变量,从库对应主库状态变量值的子模块;否则执行用于结束Python监控脚本的编写的子模块;用于获取全局状态变量,系统变量,复制状态变量,从库对应主库状态变量值的子模块;用于依次获取Key_buffer_read_hits读取命中率、Key_buffer_write_hits写入命中率、Key_buffer_used_pct重复使用率、Innodb_buffer_pool_hits命中率、Qcache_hits查询缓存命中率、Open_tables_pct打开表的百分率、Opened_tables打开表数、Thread_cache_hits命中率、QPS、TPS、Innodb_row_lock_current_waits行锁数、Innodb_row_lock_time_avg平均等待时间、Slow_queries慢查询量、Threads_connected应用连接数、Com_select次数、Com_update次数、Com_delete次数以及Com_insert次数进行查询的子模块;用于获取上一次KEY_READS、读请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_read_hits的值,公式是
Figure BDA0002395881960000032
的子模块;用于获取上一次KEY_WRITES、写请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_write_hits的值,公式是
Figure BDA0002395881960000033
的子模块;用于计算Key_buffer_used_pct的值,公式是
Figure BDA0002395881960000034
的子模块;用于计算Innodb_buffer_pool_hits的值,公式是
Figure BDA0002395881960000035
的子模块;用于计算Qcache_hits的值,公式是
Figure BDA0002395881960000036
的子模块;用于计算Open_tables_pct的值,公式是
Figure BDA0002395881960000041
的子模块;用于计算Opened_tables的值,公式是
Figure BDA0002395881960000042
的子模块;用于获取上一次数据库的连接数、线程创建数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Thread_cache_hits的值,公式是
Figure BDA0002395881960000043
的子模块;用于获取上一次数据库的查询数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算QPS的值,公式是
Figure BDA0002395881960000044
的子模块;用于获取上一次数据库的提交数、回滚数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算TPS的值,公式是
Figure BDA0002395881960000045
的子模块;用于获取上一次数据库执行多少次select语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_select的值,公式是
Figure BDA0002395881960000046
的子模块;用于获取上一次数据库执行多少次update语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_update的值,公式是
Figure BDA0002395881960000047
的子模块;用于获取上一次数据库执行多少次delete语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_delete的值,公式是
Figure BDA0002395881960000048
的子模块;用于获取上一次数据库执行多少次insert语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_insert的值,公式是
Figure BDA0002395881960000049
的子模块;用于将上述计算变量数值并插入mydb的db_status表的子模块;用于进行MySQL数据库中的长查询,查询当前数据执行时间超过设定时间的会话,并将结果保存到slow_query_sql变量的子模块;用于将上述计算结果以json格式输出到文本文件的子模块;用于将全局状态变量值写入上一次db状态数值文件的子模块;用于结束Python监控脚本的编写的子模块。所述用于上传所述Python监控脚本,并进行配置的模块是将所述Python监控脚本上传到运行目录的子模块。所述用于执行所述述Python监控脚本的模块是按生产环境要求,通过Crontab定时执行上述Python监控脚本查看当前MySQL数据库的状态的子模块。
本发明所提供的一种MySQL数据库监控脚本的实现方法及系统,是针对当前情况下兼容性差,安装繁琐,操作维护过程复杂,跨平台移植性低,跨系统版本较少的缺陷,提供一种多平台支持,安装简单,维护容易,跨系统版本较多的MySQL数据库监控的实现方法及系统。
本发明所提供的一种MySQL数据库监控脚本的实现方法及系统,具有以下有益效果:由于通过编写Python监控脚本,并将Python监控脚本上传后对其进行配置;修改Python监控脚本的执行权限后,执行Python监控脚本,最后将运行结果进行保存或者下载,其安装简单方便,易维护,跨平台一致性较好,跨系统版本较多。
附图说明
图1、2为本发明实施例一所提供的MySQL数据库监控脚本的实现方法的步骤示意图;
图3为本发明实施例一所述S1用于编写Python监控脚本的步骤示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
如图1所示,本实施例提供一种MySQL数据库监控脚本的实现方法,包括如下步骤:
S1用于编写Python监控脚本的步骤;
S2用于上传所述Python监控脚本,并进行配置的步骤;
S3用于修改所述Python监控脚本的执行权限的步骤;
S4用于执行所述述Python监控脚本的步骤;
S5用于查看上述Python监控脚本的运行结果,并将其执行结果进行保存或下载的步骤。
本领域技术人员可以理解,本发明所提供的一种MySQL数据库监控脚本的实现方法是针对当前情况下兼容性差,安装繁琐,操作维护过程复杂,跨平台移植性低,跨系统版本较少的缺陷,提供一种多平台支持,安装简单,维护容易,跨系统版本较多的MySQL数据库监控的实现方法及系统。
本发明所提供的一种MySQL数据库监控脚本的实现方法,具有以下有益效果:由于通过编写Python监控脚本,并将Python监控脚本上传后对其进行配置;修改Python监控脚本的执行权限后,执行Python监控脚本,最后将运行结果进行保存或者下载,其安装简单方便,易维护,跨平台一致性较好,跨系统版本较多。
如图3所示,所述S1用于编写Python监控脚本的步骤包括:
S100用于加载脚本中用到的Python监控脚本,并判断是否加载成功,如是,执行步骤S101;否则执行步骤S110;
S101用于调用采集脚本的步骤;
S102用于读取my.cnf文件中数据配置信息,包括MySQL的端口号、安装目录、数据目录、套接字文件以及最大连接数,并判断是否读取成功,如是,执行步骤S103;否则执行步骤S123;
S103用于获取全局状态变量,系统变量,复制状态变量,从库对应主库状态变量值的步骤;
S104用于依次获取Key_buffer_read_hits读取命中率、Key_buffer_write_hits写入命中率、Key_buffer_used_pct重复使用率、Innodb_buffer_pool_hits命中率、Qcache_hits查询缓存命中率、Open_tables_pct打开表的百分率、Opened_tables打开表数、Thread_cache_hits命中率、QPS、TPS、Innodb_row_lock_current_waits行锁数、Innodb_row_lock_time_avg平均等待时间、Slow_queries慢查询量、Threads_connected应用连接数、Com_select次数、Com_update次数、Com_delete次数以及Com_insert次数进行查询的步骤;
S105用于获取上一次KEY_READS、读请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_read_hits的值,公式是
Figure BDA0002395881960000061
的步骤;
S106用于获取上一次KEY_WRITES、写请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_write_hits的值,公式是
Figure BDA0002395881960000062
的步骤;
S107用于计算Key_buffer_used_pct的值,公式是
Figure BDA0002395881960000063
的步骤;
S108用于计算Innodb_buffer_pool_hits的值,公式是
Figure BDA0002395881960000064
的步骤;
S109用于计算Qcache_hits的值,公式是
Figure BDA0002395881960000065
的步骤;
S110用于计算Open_tables_pct的值,公式是
Figure BDA0002395881960000066
的步骤;
S111用于计算Opened_tables的值,公式是
Figure BDA0002395881960000067
的步骤;
S112用于获取上一次数据库的连接数、线程创建数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Thread_cache_hits的值,公式是
Figure BDA0002395881960000068
的步骤;
S113用于获取上一次数据库的查询数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算QPS的值,公式是
Figure BDA0002395881960000069
的步骤;
S114用于获取上一次数据库的提交数、回滚数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算TPS的值,公式是
Figure BDA0002395881960000071
的步骤;
S115用于获取上一次数据库执行多少次select语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_select的值,公式是
Figure BDA0002395881960000072
的步骤;
S116用于获取上一次数据库执行多少次update语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_update的值,公式是
Figure BDA0002395881960000073
的步骤;
S117用于获取上一次数据库执行多少次delete语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_delete的值,公式是
Figure BDA0002395881960000074
的步骤;
S118用于获取上一次数据库执行多少次insert语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_insert的值,公式是
Figure BDA0002395881960000075
的步骤;
S119用于将上述计算变量数值并插入mydb的db_status表的步骤;
S120用于进行MySQL数据库中的长查询,查询当前数据执行时间超过设定时间的会话,并将结果保存到slow_query_sql变量的步骤;
S121用于将S105至S120计算结果以json格式输出到文本文件的步骤;
S122用于将全局状态变量值写入上一次db状态数值文件的步骤;
S123用于结束Python监控脚本的编写的步骤。
本领域技术人员可以理解,Key_buffer_read_hits读取命中率是指键值在缓存中读取到,有即为命中,该值就是用于判断命中的百分比;Key_buffer_write_hits写入命中率是指键值在缓存中之前有没有写过,有即为命中,该值就是用于判断命中的百分比;Key_buffer_used_pct重复使用率是指缓存中的键被重复使用的百分比;Innodb_buffer_pool_hits命中率是指innodb存储引擎缓冲池读命中率;Qcache_hits为查询缓存命中率;Open_tables_pct打开表的百分率为打开的表占全库所有表的百分比;Opened_tables打开表数是指打开过多少表;Thread_cache_hits命中率为线程缓存的命中率;QPS(Query PerSecond)为每秒查询次数;TPS(Transactions Per Second)为每秒事务量;Innodb_row_lock_current_waits行锁数为当前等待的行锁数;Innodb_row_lock_time_avg为获取行锁的平均等待时间;Slow_queries慢查询量为查询速度慢的数量;Threads_connected应用连接数为当前有多少应用连接数;Com_select次数是指数据库启动以来,select语句执行了多少次;Com_update次数是指数据库启动以来,update语句执行了多少次;Com_delete次数是指数据库启动以来,删除语句执行了多少次;Com_insert次数是指数据库启动以来,插入语句执行了多少次。本实施例中用于进行MySQL数据库中的长查询,查询当前数据执行时间超过设定时间的会话,在设定时间超过10分钟,将结果保存到slow_query_sql变量。
进一步,在本发明所提供的一种MySQL数据库监控脚本的实现方法中,所述S2用于上传所述Python监控脚本,并进行配置的步骤是将所述Python监控脚本上传到运行目录。
进一步,在本发明所提供的一种MySQL数据库监控脚本的实现方法中,所述S4用于执行所述述Python监控脚本的步骤是按生产环境要求,通过Crontab定时执行上述Python监控脚本查看当前MySQL数据库的状态。
实施例二
本实施例提供一种MySQL数据库监控脚本的实现系统,包括:
用于编写Python监控脚本的模块;
用于上传所述Python监控脚本,并进行配置的模块;
用于修改所述Python监控脚本的执行权限的模块;
用于执行所述述Python监控脚本的模块;
用于查看上述Python监控脚本的运行结果,并将其执行结果进行保存或下载的模块。
本领域技术人员可以理解,本发明所提供的一种MySQL数据库监控脚本的实现系统是针对当前情况下兼容性差,安装繁琐,操作维护过程复杂,跨平台移植性低,跨系统版本较少的缺陷,提供一种多平台支持,安装简单,维护容易,跨系统版本较多的MySQL数据库监控的实现方法及系统。
本发明所提供的一种MySQL数据库监控脚本的实现系统,具有以下有益效果:由于通过编写Python监控脚本,并将Python监控脚本上传后对其进行配置;修改Python监控脚本的执行权限后,执行Python监控脚本,最后将运行结果进行保存或者下载,其安装简单方便,易维护,跨平台一致性较好,跨系统版本较多。
进一步,所述用于编写Python监控脚本的模块包括:
用于加载脚本中用到的Python监控脚本中,并判断是否加载成功,如是,执行用于调用采集脚本的子模块;否则执行用于计算Open_tables_pct的值,公式是
Figure BDA0002395881960000081
的子模块;
用于调用采集脚本的模块;
用于读取my.cnf文件中数据配置信息,包括MySQL的端口号、安装目录、数据目录、套接字文件以及最大连接数,并判断是否读取成功,如是,执行用于获取全局状态变量,系统变量,复制状态变量,从库对应主库状态变量值的子模块;否则执行用于结束Python监控脚本的编写的子模块;
用于获取全局状态变量,系统变量,复制状态变量,从库对应主库状态变量值的子模块;
用于依次获取Key_buffer_read_hits读取命中率、Key_buffer_write_hits写入命中率、Key_buffer_used_pct重复使用率、Innodb_buffer_pool_hits命中率、Qcache_hits查询缓存命中率、Open_tables_pct打开表的百分率、Opened_tables打开表数、Thread_cache_hits命中率、QPS、TPS、Innodb_row_lock_current_waits行锁数、Innodb_row_lock_time_avg平均等待时间、Slow_queries慢查询量、Threads_connected应用连接数、Com_select次数、Com_update次数、Com_delete次数以及Com_insert次数进行查询的子模块;
用于获取上一次KEY_READS、读请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_read_hits的值,公式是
Figure BDA0002395881960000091
的子模块;
用于获取上一次KEY_WRITES、写请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_write_hits的值,公式是
Figure BDA0002395881960000092
的子模块;
用于计算Key_buffer_used_pct的值,公式是
Figure BDA0002395881960000093
的子模块;
用于计算Innodb_buffer_pool_hits的值,公式是
Figure BDA0002395881960000094
的子模块;
用于计算Qcache_hits的值,公式是
Figure BDA0002395881960000095
的子模块;
用于计算Open_tables_pct的值,公式是
Figure BDA0002395881960000096
的子模块;
用于计算Opened_tables的值,公式是
Figure BDA0002395881960000097
的子模块;
用于获取上一次数据库的连接数、线程创建数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Thread_cache_hits的值,公式是
Figure BDA0002395881960000098
的子模块;
用于获取上一次数据库的查询数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算QPS的值,公式是
Figure BDA0002395881960000101
的子模块;
用于获取上一次数据库的提交数、回滚数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算TPS的值,公式是
Figure BDA0002395881960000102
的子模块;
用于获取上一次数据库执行多少次select语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_select的值,公式是
Figure BDA0002395881960000103
的子模块;
用于获取上一次数据库执行多少次update语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_update的值,公式是
Figure BDA0002395881960000104
的子模块;
用于获取上一次数据库执行多少次delete语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_delete的值,公式是
Figure BDA0002395881960000105
的子模块;
用于获取上一次数据库执行多少次insert语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_insert的值,公式是
Figure BDA0002395881960000106
的子模块;
用于将上述计算变量数值并插入mydb的db_status表的子模块;
用于进行MySQL数据库中的长查询,查询当前数据执行时间超过设定时间的会话,并将结果保存到slow_query_sql变量的子模块;
用于将上述计算结果以json格式输出到文本文件的子模块;
用于将全局状态变量值写入上一次db状态数值文件的子模块;
用于结束Python监控脚本的编写的子模块。
本领域技术人员可以理解,Key_buffer_read_hits读取命中率是指键值在缓存中读取到,有即为命中,该值就是用于判断命中的百分比;Key_buffer_write_hits写入命中率是指键值在缓存中之前有没有写过,有即为命中,该值就是用于判断命中的百分比;Key_buffer_used_pct重复使用率是指缓存中的键被重复使用的百分比;Innodb_buffer_pool_hits命中率是指innodb存储引擎缓冲池读命中率;Qcache_hits为查询缓存命中率;Open_tables_pct打开表的百分率为打开的表占全库所有表的百分比;Opened_tables打开表数是指打开过多少表;Thread_cache_hits命中率为线程缓存的命中率;QPS(Query PerSecond)为每秒查询次数;TPS(Transactions Per Second)为每秒事务量;Innodb_row_lock_current_waits行锁数为当前等待的行锁数;Innodb_row_lock_time_avg为获取行锁的平均等待时间;Slow_queries慢查询量为查询速度慢的数量;Threads_connected应用连接数为当前有多少应用连接数;Com_select次数是指数据库启动以来,select语句执行了多少次;Com_update次数是指数据库启动以来,update语句执行了多少次;Com_delete次数是指数据库启动以来,删除语句执行了多少次;Com_insert次数是指数据库启动以来,插入语句执行了多少次。本实施例中用于进行MySQL数据库中的长查询,查询当前数据执行时间超过设定时间的会话,在设定时间超过10分钟,将结果保存到slow_query_sql变量的子模块。用于将上述计算结果以json格式输出到文本文件的子模块中所述计算结果是从用于获取上一次KEY_READS、读请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_read_hits的值,公式是
Figure BDA0002395881960000111
的子模块,至用于进行MySQL数据库中的长查询,查询当前数据执行时间超过10分钟的会话,并将结果保存到slow_query_sql变量的子模块。
进一步,在本发明所提供的一种MySQL数据库监控脚本的实现系统中,所述用于上传所述Python监控脚本,并进行配置的模块是将所述Python监控脚本上传到运行目录的子模块。
进一步,在本发明所提供的一种MySQL数据库监控脚本的实现系统中,所述用于执行所述述Python监控脚本的模块是按生产环境要求,通过Crontab定时执行上述Python监控脚本查看当前MySQL数据库的状态的子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (8)

1.一种MySQL数据库监控脚本的实现方法,其特征在于,包括如下步骤:
S1用于编写Python监控脚本的步骤;
S2用于上传所述Python监控脚本,并进行配置的步骤;
S3用于修改所述Python监控脚本的执行权限的步骤;
S4用于执行所述述Python监控脚本的步骤;
S5用于查看上述Python监控脚本的运行结果,并将其执行结果进行保存或下载的步骤。
2.如权利要求1所述的MySQL数据库监控脚本的实现方法,其特征在于,所述S1用于编写Python监控脚本的步骤包括:
S100用于加载脚本中用到的Python监控脚本,并判断是否加载成功,如是,执行步骤S101;否则执行步骤S110;
S101用于调用采集脚本的步骤;
S102用于读取my.cnf文件中数据配置信息,包括MySQL的端口号、安装目录、数据目录、套接字文件以及最大连接数,并判断是否读取成功,如是,执行步骤S103;否则执行步骤S123;
S103用于获取全局状态变量,系统变量,复制状态变量,从库对应主库状态变量值的步骤;
S104用于依次获取Key_buffer_read_hits读取命中率、Key_buffer_write_hits写入命中率、Key_buffer_used_pct重复使用率、Innodb_buffer_pool_hits命中率、Qcache_hits查询缓存命中率、Open_tables_pct打开表的百分率、Opened_tables打开表数、Thread_cache_hits命中率、QPS、TPS、Innodb_row_lock_current_waits行锁数、Innodb_row_lock_time_avg平均等待时间、Slow_queries慢查询量、Threads_connected应用连接数、Com_select次数、Com_update次数、Com_delete次数以及Com_insert次数进行查询的步骤;
S105用于获取上一次KEY_READS、读请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_read_hits的值,公式是
Figure FDA0002395881950000011
的步骤;
S106用于获取上一次KEY_WRITES、写请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_write_hits的值,公式是
Figure FDA0002395881950000012
的步骤;
S107用于计算Key_buffer_used_pct的值,公式是
Figure FDA0002395881950000013
的步骤;
S108用于计算Innodb_buffer_pool_hits的值,公式是
Figure FDA0002395881950000021
的步骤;
S109用于计算Qcache_hits的值,公式是
Figure FDA0002395881950000022
的步骤;
S110用于计算Open_tables_pct的值,公式是
Figure FDA0002395881950000023
的步骤;
S111用于计算Opened_tables的值,公式是
Figure FDA0002395881950000024
的步骤;
S112用于获取上一次数据库的连接数、线程创建数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Thread_cache_hits的值,公式是
Figure FDA0002395881950000025
的步骤;
S113用于获取上一次数据库的查询数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算QPS的值,公式是
Figure FDA0002395881950000026
的步骤;
S114用于获取上一次数据库的提交数、回滚数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算TPS的值,公式是
Figure FDA0002395881950000027
的步骤;
S115用于获取上一次数据库执行多少次select语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_select的值,公式是
Figure FDA0002395881950000028
的步骤;
S116用于获取上一次数据库执行多少次update语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_update的值,公式是
Figure FDA0002395881950000029
的步骤;
S117用于获取上一次数据库执行多少次delete语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_delete的值,公式是
Figure FDA00023958819500000210
的步骤;
S118用于获取上一次数据库执行多少次insert语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_insert的值,公式是
Figure FDA00023958819500000211
的步骤;
S119用于将上述计算变量数值并插入mydb的db_status表的步骤;
S120用于进行MySQL数据库中的长查询,查询当前数据执行时间超过设定时间的会话,并将结果保存到slow_query_sql变量的步骤;
S121用于将S105至S120计算结果以json格式输出到文本文件的步骤;
S122用于将全局状态变量值写入上一次db状态数值文件的步骤;
S123用于结束Python监控脚本的编写的步骤。
3.如权利要求2所述的MySQL数据库监控脚本的实现方法,其特征在于,所述S2用于上传所述Python监控脚本,并进行配置的步骤是将所述Python监控脚本上传到运行目录。
4.如权利要求3所述的MySQL数据库监控脚本的实现方法,其特征在于,所述S4用于执行所述述Python监控脚本的步骤是按生产环境要求,通过Crontab定时执行上述Python监控脚本查看当前MySQL数据库的状态。
5.一种MySQL数据库监控脚本的实现系统,其特征在于,包括:
用于编写Python监控脚本的模块;
用于上传所述Python监控脚本,并进行配置的模块;
用于修改所述Python监控脚本的执行权限的模块;
用于执行所述述Python监控脚本的模块;
用于查看上述Python监控脚本的运行结果,并将其执行结果进行保存或下载的模块。
6.如权利要求5所述的MySQL数据库监控脚本的实现系统,其特征在于,所述用于编写Python监控脚本的模块包括:
用于加载脚本中用到的Python监控脚本中,并判断是否加载成功,如是,执行用于调用采集脚本的子模块;否则执行用于计算Open_tables_pct的值,公式是
Figure FDA0002395881950000031
的子模块;
用于调用采集脚本的模块;
用于读取my.cnf文件中数据配置信息,包括MySQL的端口号、安装目录、数据目录、套接字文件以及最大连接数,并判断是否读取成功,如是,执行用于获取全局状态变量,系统变量,复制状态变量,从库对应主库状态变量值的子模块;否则执行用于结束Python监控脚本的编写的子模块;
用于获取全局状态变量,系统变量,复制状态变量,从库对应主库状态变量值的子模块;
用于依次获取Key_buffer_read_hits读取命中率、Key_buffer_write_hits写入命中率、Key_buffer_used_pct重复使用率、Innodb_buffer_pool_hits命中率、Qcache_hits查询缓存命中率、Open_tables_pct打开表的百分率、Opened_tables打开表数、Thread_cache_hits命中率、QPS、TPS、Innodb_row_lock_current_waits行锁数、Innodb_row_lock_time_avg平均等待时间、Slow_queries慢查询量、Threads_connected应用连接数、Com_select次数、Com_update次数、Com_delete次数以及Com_insert次数进行查询的子模块;
用于获取上一次KEY_READS、读请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_read_hits的值,公式是
Figure FDA0002395881950000041
的子模块;
用于获取上一次KEY_WRITES、写请求数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Key_buffer_write_hits的值,公式是
Figure FDA0002395881950000042
的子模块;
用于计算Key_buffer_used_pct的值,公式是
Figure FDA0002395881950000043
的子模块;
用于计算Innodb_buffer_pool_hits的值,公式是
Figure FDA0002395881950000044
的子模块;
用于计算Qcache_hits的值,公式是
Figure FDA0002395881950000045
的子模块;
用于计算Open_tables_pct的值,公式是
Figure FDA0002395881950000046
的子模块;
用于计算Opened_tables的值,公式是
Figure FDA0002395881950000047
的子模块;
用于获取上一次数据库的连接数、线程创建数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Thread_cache_hits的值,公式是
Figure FDA0002395881950000048
的子模块;
用于获取上一次数据库的查询数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算QPS的值,公式是
Figure FDA0002395881950000049
的子模块;
用于获取上一次数据库的提交数、回滚数的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算TPS的值,公式是
Figure FDA00023958819500000410
的子模块;
用于获取上一次数据库执行多少次select语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_select的值,公式是
Figure FDA00023958819500000411
的子模块;
用于获取上一次数据库执行多少次update语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_update的值,公式是
Figure FDA0002395881950000051
的子模块;
用于获取上一次数据库执行多少次delete语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_delete的值,公式是
Figure FDA0002395881950000052
的子模块;
用于获取上一次数据库执行多少次insert语句的状态值,如上一次状态数值文件不存在,缺省将上一次的状态数值都置为0,计算Com_insert的值,公式是
Figure FDA0002395881950000053
的子模块;
用于将上述计算变量数值并插入mydb的db_status表的子模块;
用于进行MySQL数据库中的长查询,查询当前数据执行时间超过设定时间的会话,并将结果保存到slow_query_sql变量的子模块;
用于将上述计算结果以json格式输出到文本文件的子模块;
用于将全局状态变量值写入上一次db状态数值文件的子模块;
用于结束Python监控脚本的编写的子模块。
7.如权利要求6所述的MySQL数据库监控脚本的实现系统,其特征在于,所述用于上传所述Python监控脚本,并进行配置的模块是将所述Python监控脚本上传到运行目录的子模块。
8.如权利要求7所述的MySQL数据库监控脚本的实现系统,其特征在于,在本发明所提供的一种MySQL数据库监控脚本的实现系统中,所述用于执行所述述Python监控脚本的模块是按生产环境要求,通过Crontab定时执行上述Python监控脚本查看当前MySQL数据库的状态的子模块。
CN202010131496.1A 2020-02-28 2020-02-28 MySQL数据库监控脚本的实现方法及系统 Pending CN111459905A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010131496.1A CN111459905A (zh) 2020-02-28 2020-02-28 MySQL数据库监控脚本的实现方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010131496.1A CN111459905A (zh) 2020-02-28 2020-02-28 MySQL数据库监控脚本的实现方法及系统

Publications (1)

Publication Number Publication Date
CN111459905A true CN111459905A (zh) 2020-07-28

Family

ID=71682450

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010131496.1A Pending CN111459905A (zh) 2020-02-28 2020-02-28 MySQL数据库监控脚本的实现方法及系统

Country Status (1)

Country Link
CN (1) CN111459905A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567531A (zh) * 2011-12-30 2012-07-11 互动在线(北京)科技有限公司 一种通用的轻量级数据库状态监控方法
CN102567185A (zh) * 2011-12-31 2012-07-11 北京新媒传信科技有限公司 一种应用服务器的监控方法
CN104063301A (zh) * 2014-07-02 2014-09-24 网神信息技术(北京)股份有限公司 监控方法和装置
CN104503880A (zh) * 2014-12-16 2015-04-08 新余兴邦信息产业有限公司 一种MySQL数据库监控选项脚本的实现方法及装置
CN104657250A (zh) * 2014-12-16 2015-05-27 无锡华云数据技术服务有限公司 一种对云主机进行性能监控的监控方法
CN106844163A (zh) * 2017-03-16 2017-06-13 郑州云海信息技术有限公司 一种数据库主从同步状态监控的方法以及装置
CN109376139A (zh) * 2018-08-15 2019-02-22 中国平安人寿保险股份有限公司 数据库集中监控方法、计算机装置及存储介质
CN110515799A (zh) * 2019-08-15 2019-11-29 浙江万朋教育科技股份有限公司 基于python语言的MySQL监控系统及实现方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567531A (zh) * 2011-12-30 2012-07-11 互动在线(北京)科技有限公司 一种通用的轻量级数据库状态监控方法
CN102567185A (zh) * 2011-12-31 2012-07-11 北京新媒传信科技有限公司 一种应用服务器的监控方法
CN104063301A (zh) * 2014-07-02 2014-09-24 网神信息技术(北京)股份有限公司 监控方法和装置
CN104503880A (zh) * 2014-12-16 2015-04-08 新余兴邦信息产业有限公司 一种MySQL数据库监控选项脚本的实现方法及装置
CN104657250A (zh) * 2014-12-16 2015-05-27 无锡华云数据技术服务有限公司 一种对云主机进行性能监控的监控方法
CN106844163A (zh) * 2017-03-16 2017-06-13 郑州云海信息技术有限公司 一种数据库主从同步状态监控的方法以及装置
CN109376139A (zh) * 2018-08-15 2019-02-22 中国平安人寿保险股份有限公司 数据库集中监控方法、计算机装置及存储介质
CN110515799A (zh) * 2019-08-15 2019-11-29 浙江万朋教育科技股份有限公司 基于python语言的MySQL监控系统及实现方法

Similar Documents

Publication Publication Date Title
US10152500B2 (en) Read mostly instances
US9213740B2 (en) System and methodology for automatic tuning of database query optimizer
EP2797014B1 (en) Database update execution according to power management schemes
US20090307329A1 (en) Adaptive file placement in a distributed file system
US20080183684A1 (en) Caching an Access Plan for a Query
WO2019109854A1 (zh) 分布式数据库数据处理方法、装置、存储介质及电子装置
CN111737227B (zh) 数据修改方法及系统
WO2020224216A1 (zh) 大批量数据处理方法、装置、计算机设备及存储介质
WO2016169237A1 (zh) 数据处理方法及装置
CN105718474A (zh) 用于对MySQL数据库的并发操作进行控制的方法及装置
US8458511B2 (en) Fault isolation using code paths
JP2007522559A (ja) データベースシステムにおけるラージオブジェクトインフラストラクチャのためのシステムおよび方法
CN111459905A (zh) MySQL数据库监控脚本的实现方法及系统
WO2020208149A1 (en) Enterprise resource planning system, server and supervision method of sql queries in such a system or server
US8621085B2 (en) Methods, systems, and computer program products for managing and utilizing connections between an application server and an enterprise information system based on a daytona architecture
CN116467310A (zh) 无效索引的无锁标记方法、存储介质和计算机设备
CN115934272A (zh) 一种联机批量任务处理方法及装置
CN112115150B (zh) 嵌入式内存数据库的数据管理方法、终端设备及介质
CN114153438A (zh) 一种api自动生成系统
CN113590637A (zh) 一种多进程共享数据库表更新方法及装置、数据库系统
US20080016029A1 (en) Optimizing a query to a database
KR102100513B1 (ko) 프리미티브 생성 방법과 그를 이용한 질의처리 방법
WO2023019981A1 (zh) 数据查询方法以及相关设备
US11461302B1 (en) Storing multiple instances of data items to implement key overloading in database tables
CN115757452A (zh) 一种封锁方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20200728

RJ01 Rejection of invention patent application after publication