1
数据库版本
mysqladmin version
2
需要监控的基本状态信息
数据库的连接状态
mysqladmin ping
数据库启动时间
Uptime
数据库当前连接数
Threads_connected
数据库使用的连接最大个数
max_used_connections
数据库放弃的连接个数
aborted_clients
数据库尝试连接失败次数
aborted_connects
数据库软件目录
数据库数据目录
3
需要监控的参数
Server_Id
(主从不能相同)
Read_Only
(只读是否开启)
Max_Connections
(最大允许同时连接的数量)
Max_Connect_Errors
(允许一个主机最多的错误链接次数)
Wait_Timeout
(指的是mysql在关闭一个非交互的连接之前所要等待的秒数)
Skip_Name_Resolve
(禁用DNS主机名查找)
Sync_Binlog
(双一)
Innodb_Flush_Log_At_Trx_Commit
(双一)
Expire_Logs_Days
(Binlog保留的天数)
Table_Open_Cache
(所有线程打开表的数量)
Query_Cache_Size
(查询缓存大小)
Sort_Buffer_Size
(会话的排序空间)
Read_Buffer_Size
(MySQL读入缓冲区大小)
Join_Buffer_Size
(为链接操作分配的最小缓存大小)
Tmp_Table_Size
(临时表的大小)
open_files_limit
(操作系统允许mysql打开的文件数量)
Lower_Case_Table_Names
(大小写敏感)
Innodb_Buffer_Pool_Size
(innodb缓冲池大小)
Innodb_Thread_Concurrency
(并发线程数量)
Innodb_Flush_Method
(innodb数据文件及redo log的打开、刷写模式)
Innodb_File_Per_Table
(InnoDB为独立表空间模式)
Innodb_Lock_Wait_Timeout
(事务等待获取资源等待的最长时间)
Innodb_Open_Files
(限制Innodb能打开的表的数据)
Log_Bin
(二进制日志开关)
Log_Bin_Basename
(二进制日志文件名)
Log_Bin_Index
(二进制日志索引文件名)
Binlog_Format
(二进制日志的格式)
Binlog_Row_Image
(minimal只记录要修改的列的记录)
Log_Timestamps
(记录日志的显示时间参数,设置成SYSTEM)
Slow_Query_Log
(慢日志是否开启)
Slow_Query_Log_File
(慢日志存放位置)
Log_Error
(错误日志存放位置)
4
数据库主从状态监控项
Master/ Slave
判断是主库还是从库
SlaveIO Running
IO进程运行状态
SlaveSQL Running
SQL进程运行状态
MasterLog File
主库二进制日志文件
RelayMaster Log File
是否跟得上Master Log File
ReadMaster Log Pos
读到主库上的POS值
ExecMaster Log Pos
执行主库上的POS值
SecondsBehind Master
从库和主库的延迟时间
5
数据库其它监控项
数据库中的大表
selecttable_schema,table_name,round((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/1024/1024,2)"Size(M)" from information_schema.tables group by table_schema,table_nameorder by round((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/1024/1024,2) desc limit10\G'
数据库未建主键索引的表
SELECTdistinct table_name,table_schema FROM information_schema.columns WHEREtable_schema not in ('sys','information_schema','performance_schema','mysql')AND table_name not in (select distinct table_name frominformation_schema.columns where column_key='PRI')\G"
数据库锁统计
showstatus like 'table_locks_%'\G"
数据库缓存命中率
如果Qcache_hits+Com_select<>0则为 Qcache_hits/(Qcache_hits+Com_select),否则为0
线程缓存命中率
如果Connections<>0,则为1-Threads_created/Connections,否则为0
创建磁盘存储的临时表比率
如果Created_tmp_disk_tables+Created_tmp_tables<>0,则Created_tmp_disk_tables/(Created_tmp_disk_tables+Created_tmp_tables),否则为0
连接使用率
如果max_connections<>0,则threads_connected/max_connections,否则为0
打开文件比率
如果open_files_limit<>0,则open_files/open_files_limit,否则为0,表缓存使用率如果table_open_cache<>0,则open_tables/table_open_cache,否则为0
数据库Innodb中Read命中率
showstatus like 'Innodb_buffer_pool_%'\G"
数据库全表扫描情况
showglobal status like 'handler_read%'\G"
MySQL的二进制日志是不依赖于存储引擎的,而是依赖于SQL层,记录和SQL语句有关的信息。
主要用来备份数据和时间点恢复、主从同步。
binglog的格式有3种
statment(SBR)格式、Row(RBR)格式、MIXED(MBR)综合格式。
可以用sql语句进行查看(show variables like "binlog_format";)
定义:
.基于sql语句复制,每一条会修改数据的sql都会记录在binlog中。
优点:
.Binlog文件较小,节约IO,提高性能。
.日志是包含用户执行的原始SQL,方便统计和审计。
.Binlog方便阅读,方便故障修复。
缺点:
.存在安全隐患,可能导致主从不同步一致。
.对一些系统函数不能准复制或是不能复制。
Row格式
定义:
.不记录sql语句上下文相关信息,只保留被修改的记录。
优点:
.相比statment更加安全的复制格式。
.在某些情况下复制速度更快(SQL复杂,表有主键)。
.系统的特殊函数也可以复制。
.更少锁。
缺点:
.Binary log比较大(支持 binlog_row_image)。
.单语句更新表的行数过多,会形成大量binlog。
.无法从binlog看见用户执行的SQL。
MIXED格式
定义:
.混合使用row和statment格式。
优点:
.当DML(操纵语言语)句更新一个表时,或者当函数中包含UUID()时,自动将binlog的模式由statment模式改为Row模式。
缺点:
.对于DDL记录会STATMENT,对于TABLE里的行操作记录为row格式。
.如果使用Innodb表,事务级别使用了 READ COMMIT or READ UNCOMMITTED 日志级别只能使用row格式。