Python简单巡检MySQL
Posted zhouwanchun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python简单巡检MySQL相关的知识,希望对你有一定的参考价值。
#!/usr/bin/env python # -*- coding: utf-8 -*- #----------------------------------------------------------# # Date : xxxx-xx-xx # # Author : Created by zhouwanchun. # # Wechat : loveoracle11g # # Function: This scripts function is ... # # Version : 1.1 # #----------------------------------------------------------# # 导入模块 import os import subprocess import mysql.connector import myloginpath # Linux终端清屏 os.system(‘clear‘) # 注释信息 print("""33[1;36m ############################################################ # Date : 2020-05-22 # # Author : Created by zhouwanchun. # # Wechat : loveoracle11g # # Function: This scripts function is ... # # Version : v1.1 # ############################################################ 33[0m""") # 连接数据库 mylogin = myloginpath.parse(‘rds_dba‘) # print(mylogin, type(mylogin)) conn = mysql.connector.connect(**mylogin) # 创建SQL命令通道 sql_cmd = conn.cursor() # SQL语句 ### 检查实例参数 sql1 = "show global variables;" ### 检查每个库的库大小 sql2 = ‘select TABLE_SCHEMA as "数据库",truncate(SUM(DATA_LENGTH)/1024/1024, 2) as "大小(MB)" from information_schema.tables where TABLE_SCHEMA not in ("mysql", "information_schema", "performance_schema", "sys") group by TABLE_SCHEMA;‘ sql_cmd.execute(sql1) sql1_result = dict(sql_cmd.fetchall()) # 检查MySQL版本 print("33[1;32m当前数据库的版本是:33[0m" + sql1_result[‘version‘]) # 检查MySQL端口 print("33[1;35m当前数据库的端口是:33[0m" + sql1_result[‘port‘]) # 检查server_id print("33[1;32m当前数据库的server_id是:33[0m" + sql1_result[‘server_id‘]) # 检查basedir目录 print("33[1;32m当前数据库的basedir在:33[0m" + sql1_result[‘basedir‘]) # 检查datadir目录 print("33[1;35m当前数据库的datadir在:33[0m" + sql1_result[‘datadir‘]) # 检查tmpdir目录 print("33[1;32m当前数据库的tmpdir在:33[0m" + sql1_result[‘tmpdir‘]) # 检查pid_file print("33[1;32m当前数据库的pid_file在:33[0m" + sql1_result[‘pid_file‘]) # 检查socket print("33[1;35m当前数据库的socket在:33[0m" + sql1_result[‘socket‘]) # 检查log_error print("33[1;32m当前数据库的log_error在:33[0m" + sql1_result[‘log_error‘]) # 检查binlog print("33[1;32m当前数据库是否启用记录binlog:33[0m" + sql1_result[‘log_slave_updates‘]) print("33[1;32m当前数据库的binlog格式为:33[0m" + sql1_result[‘binlog_format‘]) print("33[1;32m当前数据库的binlog文件在:33[0m" + sql1_result[‘log_bin‘]) print("33[1;32m当前数据库的binlog默认保留天数为:33[0m" + sql1_result[‘expire_logs_days‘]) print("33[1;35m当前数据库的binlog刷写策略sync_binlog:33[0m" + sql1_result[‘sync_binlog‘]) # 检查gtid print("33[1;32m当前数据库是否启用gtid模式gtid_mode:33[0m" + sql1_result[‘gtid_mode‘]) print("33[1;32m当前数据库是否开启gtid安全限制enforce_gtid_consistency:33[0m" + sql1_result[‘enforce_gtid_consistency‘]) # 检查relay_log print("33[1;32m当前数据库的relay_log文件在:33[0m" + sql1_result[‘relay_log‘]) # 检查slow_query_log print("33[1;32m当前数据库是否启用slow_query_log:33[0m" + sql1_result[‘slow_query_log‘]) print("33[1;32m当前数据库慢查询时间为:long_query_time:33[0m" + sql1_result[‘long_query_time‘]) print("33[1;32m当前数据库慢日志在slow_query_log_file:33[0m" + sql1_result[‘slow_query_log_file‘]) # 检查general_log print("33[1;32m当前数据库是否启用general_log:33[0m" + sql1_result[‘general_log‘]) print("33[1;32m当前数据库general_log文件在general_log_file:33[0m" + sql1_result[‘general_log_file‘]) # 检查数据库实例字符集 print("33[1;32m当前MySQL服务器实例字符集是:33[0m" + sql1_result[‘character_set_server‘]) print("33[1;32m当前MySQL数据库字符集是:33[0m" + sql1_result[‘character_set_database‘]) print("33[1;32m当前MySQL客户端字符集是:33[0m" + sql1_result[‘character_set_client‘]) print("33[1;32m当前MySQL客户端连接字符集是:33[0m" + sql1_result[‘character_set_connection‘]) print("33[1;32m当前MySQL客户端返回结果字符集是:33[0m" + sql1_result[‘character_set_results‘]) print("33[1;32m当前系统字符集是:33[0m" + sql1_result[‘character_set_system‘]) print("33[1;32m当前文件系统字符集是:33[0m" + sql1_result[‘character_set_filesystem‘]) # 检查skip_name_resolve print("33[1;32m是否禁用域名解析skip_name_resolve:33[0m" + sql1_result[‘skip_name_resolve‘]) # 检查只读模式 print("33[1;35m是否开启只读模式read_only:33[0m" + sql1_result[‘read_only‘]) print("33[1;35m是否开启只读全局模式super_read_only:33[0m" + sql1_result[‘super_read_only‘]) # 检查时区设置 print("33[1;32m当前数据库时区设置为time_zone:33[0m" + sql1_result[‘time_zone‘]) # 检查load data导入导出目录 print("33[1;32m当前load data导入导出目录secure_file_priv:33[0m" + sql1_result[‘secure_file_priv‘]) # 检查连接数 print("33[1;35m当前最大连接数max_connections:33[0m" + sql1_result[‘max_connections‘]) print("33[1;35m当前最大用户连接数max_user_connections:33[0m" + sql1_result[‘max_user_connections‘]) print("33[1;32m当前最大错误连接数max_connect_errors:33[0m" + sql1_result[‘max_connect_errors‘]) # 检查超时连接 print("33[1;35m交互式超时连接时间interactive_timeout:33[0m" + sql1_result[‘interactive_timeout‘]) print("33[1;35m非交互式超时时间wait_timeout:33[0m" + sql1_result[‘wait_timeout‘]) # 检查InnoDB print("33[1;35m当前实例默认的存储引擎为default_storage_engine:33[0m" + sql1_result[‘default_storage_engine‘]) # 检查隔离级别 print("33[1;35m当前实例默认的隔离级别为transaction_isolation:33[0m" + sql1_result[‘transaction_isolation‘]) # 检查系统表空间 print("33[1;33m当前实例系统表空间在innodb_data_home_dir:33[0m" + sql1_result[‘innodb_data_home_dir‘]) print("33[1;33m当前实例ibdata1路径及大小:33[0m" + sql1_result[‘innodb_data_file_path‘]) print("33[1;33m当前实例ibtmp1路径及大小:33[0m" + sql1_result[‘innodb_temp_data_file_path‘]) print("33[1;33m当前实例innodb_buffer_pool_filename:33[0m" + sql1_result[‘innodb_buffer_pool_filename‘]) print("33[1;35m当前实例是否启用独立表空间innodb_file_per_table:33[0m" + sql1_result[‘innodb_file_per_table‘]) print("33[1;35m当前实例innodb_buffer_pool_size:33[0m" + str(int(sql1_result[‘innodb_buffer_pool_size‘])/1024/1024)) # 检查redo_log print("33[1;35m当前数据库redo_log文件在:33[0m" + sql1_result[‘innodb_log_group_home_dir‘]) print("33[1;35m当前数据库redo_log文件有:33[0m" + sql1_result[‘innodb_log_files_in_group‘] + "33[1;32m 组33[0m") print("33[1;35m当前数据库每组redo_log文件大小为:33[0m" + str(int(sql1_result[‘innodb_log_file_size‘])/1024/1024)) print("33[1;33m当前实例redo_log_buffer大小为:33[0m" + str(int(sql1_result[‘innodb_log_buffer_size‘])/1024/1024)) print("33[1;35m当前实例redo_log文件刷写策略是innodb_flush_log_at_trx_commit:33[0m" + sql1_result[‘innodb_flush_log_at_trx_commit‘]) print("33[1;35m当前实例打开数据文件及redo_log文件的模式innodb_flush_method:33[0m" + sql1_result[‘innodb_flush_method‘]) # 检查undo log print("33[1;33m当前数据库undo表空间在:33[0m" + sql1_result[‘innodb_undo_directory‘]) print("33[1;33m当前数据库undo表空间有:33[0m" + sql1_result[‘innodb_undo_tablespaces‘] + "33[1;32m 组33[0m") # 检查查询缓存 print("33[1;35m当前实例是否打开查询缓存query_cache_type:33[0m" + sql1_result[‘query_cache_type‘]) print(‘ ‘) print("33[1;32m当前实例每个库的容量大小33[0m") subprocess.run([‘/usr/local/mysql/bin/mysql --login-path=rds_dba -e ‘ + "‘" + sql2 + "‘"], shell=True) sql_cmd.close() conn.commit() conn.close()
以上是关于Python简单巡检MySQL的主要内容,如果未能解决你的问题,请参考以下文章
下位机部分-水下管道智能巡检-方案STM32+树梅派+python+opencv—水下机器人
下位机部分-水下管道智能巡检-方案STM32+树梅派+python+opencv—水下机器人
下位机部分-水下管道智能巡检-方案STM32+树梅派+python+opencv—水下机器人