首页 运维

一段shell获取mysql需监控信息

发布于: 2024-10-16

mysql_monitor.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/bin/bash
# 数据库主机的IP地址
host="127.0.0.1"
# MySQL的监听端口号,默认是3306
port="3306"
# 数据库连接的用户名
userName="root"
# 用户名对应的密码,用于身份验证
password="123456"
# 要连接的数据库名称
dbname="mysql"
# MySQL客户端工具的路径
base='/usr/bin/mysql'

# 定义函数执行MySQL查询
mysql_query() {
query=$1
$base -h$host -u$userName -p$password $dbname -P$port -e "$query" 2>/dev/null | awk 'NR==2 {print $2}'
}

echo "========= 基本配置信息 ==========="

lower_case_table_names_val=$(mysql_query "show variables like 'lower_case_table_names';")
echo "不区分大小写:$lower_case_table_names_val"

_port_val=$(mysql_query "show variables like 'port';")
echo "端口:$_port_val"

socket_val=$(mysql_query "show variables like 'socket';")
echo "socket的值:$socket_val"

skip_name_resolve_val=$(mysql_query "show variables like 'skip_name_resolve';")
echo "域名解析skip_name_resolve:$skip_name_resolve_val"

character_set_server_val=$(mysql_query "show variables like 'character_set_server';")
echo "数据库字符集character_set_server:$character_set_server_val"

interactive_timeout_val=$(mysql_query "show variables like 'interactive_timeout';")
echo "交互式连接超时时间:$interactive_timeout_val 秒"

wait_timeout_val=$(mysql_query "show variables like 'wait_timeout';")
echo "非交互式连接超时时间:$wait_timeout_val 秒"

query_cache_type_val=$(mysql_query "show variables like 'query_cache_type';")
echo "查询缓存query_cache_type:$query_cache_type_val"

innodb_version_val=$(mysql_query "show variables like 'innodb_version';")
echo "数据库版本:$innodb_version_val"

trx_isolation_val=$(mysql_query "show variables like 'tx_isolation';")
echo "隔离级别trx_isolation:$trx_isolation_val"

datadir_val=$(mysql_query "show variables like '%datadir%';")
echo "mysql 数据文件存放位置:$datadir_val"

echo "========= 连接数配置信息 ==========="

max_connections_val=$(mysql_query "show variables like 'max_connections';")
echo "最大连接数:$max_connections_val"

Max_used_connections_val=$(mysql_query "show status like 'Max_used_connections';")
echo "当前连接数:$Max_used_connections_val"

max_connect_errors_val=$(mysql_query "show variables like 'max_connect_errors';")
echo "最大错误连接数:$max_connect_errors_val"

echo "========= binlog配置信息 ==========="

sync_binlog_val=$(mysql_query "show variables like 'sync_binlog';")
echo "sync_binlog:$sync_binlog_val"

binlog_format_val=$(mysql_query "show variables like 'binlog_format';")
echo "binlog格式:$binlog_format_val"

log_bin_val=$(mysql_query "show variables like 'log-bin';")
echo "binlog文件:$log_bin_val"

expire_logs_days_val=$(mysql_query "show variables like 'expire_logs_days';")
echo "binlog文件过期时间:$expire_logs_days_val"

echo "========= GTID配置信息 ==========="

gtid_mode_val=$(mysql_query "show variables like 'gtid_mode';")
echo "是否开启gtid_mode:$gtid_mode_val"

enforce_gtid_consistency_val=$(mysql_query "show variables like 'enforce_gtid_consistency';")
echo "enforce_gtid_consistency是否开启:$enforce_gtid_consistency_val"

log_slave_updates_val=$(mysql_query "show variables like 'log_slave_updates';")
echo "级联复制是否开启log_slave_updates:$log_slave_updates_val"

echo "======== InnoDB配置信息 ========="

innodb_buffer_pool_size_val=$(mysql_query "show variables like 'innodb_buffer_pool_size';")
echo "innodb_buffer_pool_size:$innodb_buffer_pool_size_val"

innodb_log_file_size_val=$(mysql_query "show variables like 'innodb_log_file_size';")
echo "innodb_log_file_size:$innodb_log_file_size_val"

innodb_flush_log_at_trx_commit_val=$(mysql_query "show variables like 'innodb_flush_log_at_trx_commit';")
echo "innodb_flush_log_at_trx_commit:$innodb_flush_log_at_trx_commit_val"

innodb_io_capacity_val=$(mysql_query "show variables like 'innodb_io_capacity';")
echo "innodb_io_capacity:$innodb_io_capacity_val"

# 新增监控指标
echo "================= 监控指标 ==============================="

# 监控内存使用情况
innodb_buffer_pool_size_mb=$(($innodb_buffer_pool_size_val / 1024 / 1024))
echo "InnoDB 数据和索引缓存:$innodb_buffer_pool_size_mb MB"

# 查询缓存命中率
query_cache_hits=$(mysql_query "show status like 'Qcache_hits';")
echo "查询缓存命中次数:$query_cache_hits"

query_cache_inserts=$(mysql_query "show status like 'Qcache_inserts';")
echo "查询缓存插入次数:$query_cache_inserts"

# 监控线程使用情况
threads_connected=$(mysql_query "show status like 'Threads_connected';")
echo "当前连接线程数:$threads_connected"

threads_running=$(mysql_query "show status like 'Threads_running';")
echo "当前运行线程数:$threads_running"

threads_created=$(mysql_query "show status like 'Threads_created';")
echo "创建的线程数:$threads_created"

threads_cached=$(mysql_query "show status like 'Threads_cached';")
echo "缓存的线程数:$threads_cached"

# 慢查询日志
slow_queries=$(mysql_query "show status like 'Slow_queries';")
echo "慢查询次数:$slow_queries"

# InnoDB 相关性能指标
innodb_rows_read=$(mysql_query "show status like 'Innodb_rows_read';")
echo "InnoDB 读取的行数:$innodb_rows_read"

innodb_rows_inserted=$(mysql_query "show status like 'Innodb_rows_inserted';")
echo "InnoDB 插入的行数:$innodb_rows_inserted"

innodb_rows_updated=$(mysql_query "show status like 'Innodb_rows_updated';")
echo "InnoDB 更新的行数:$innodb_rows_updated"

innodb_rows_deleted=$(mysql_query "show status like 'Innodb_rows_deleted';")
echo "InnoDB 删除的行数:$innodb_rows_deleted"

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
========= 基本配置信息 ===========
不区分大小写:0
端口:3306
socket的值:/var/run/mysqld/mysqld.sock
域名解析skip_name_resolve:ON
数据库字符集character_set_server:latin1
交互式连接超时时间:28800 秒
非交互式连接超时时间:28800 秒
查询缓存query_cache_type:OFF
数据库版本:5.7.44
隔离级别trx_isolation:REPEATABLE-READ
mysql 数据文件存放位置:/var/lib/mysql/
========= 连接数配置信息 ===========
最大连接数:500
当前连接数:31
最大错误连接数:100
========= binlog配置信息 ===========
sync_binlog:1
binlog格式:MIXED
binlog文件:
binlog文件过期时间:10
========= GTID配置信息 ===========
是否开启gtid_mode:OFF
enforce_gtid_consistency是否开启:OFF
级联复制是否开启log_slave_updates:OFF
======== InnoDB配置信息 =========
innodb_buffer_pool_size:268435456
innodb_log_file_size:134217728
innodb_flush_log_at_trx_commit:1
innodb_io_capacity:200
================= 监控指标 ===============================
InnoDB 数据和索引缓存:256 MB
查询缓存命中次数:0
查询缓存插入次数:0
当前连接线程数:22
当前运行线程数:1
创建的线程数:31
缓存的线程数:9
慢查询次数:0
InnoDB 读取的行数:16824795
InnoDB 插入的行数:63983
InnoDB 更新的行数:130420
InnoDB 删除的行数:919