mysql面试(八)管理及监控类问题
性能类指标
名称 | 说明 |
---|---|
QPS | 数据库每秒处理的请求数量 |
TPS | 数据库每秒处理的事务数量 |
并发数 | 数据库实例当前并行处理的会话数量 |
连接数 | 连接到数据库会话的数量 |
缓存命中率 | Innodb 缓存命中率 |
功能类指标
名称 | 说明 |
---|---|
可用性 | 数据库是否可正常对外提供服务 |
阻塞 | 当前是否有阻塞的会话 |
死锁 | 当前事务是否产生了死锁 |
慢查询 | 实时慢查询监控 |
主从延迟 | 数据库主从延迟时间 |
主从状态 | 数据库主从复制链路是否正常 |
QPS
- show global status like "Com%"
- Sum(Com_XXX)
- show global status like "Queries"
- QOS=(Queries2-Queries1)/ 时间间隔
TPS
- show global status where Variable_name in ("com_insert","com_delete","com_update")
- TC≈com_insert+com_delete+com_update
- TPS≈(TC2-TC1)/(time2-time1)
数据库并发数
- show global status like "threads_running"
数据库连接数
- show global status like "threads_connected"
- 报警阈值 threads_connected/max_connection>0.8
Innodb 缓存命中率
- (Innodb_buffer_pool_read_requests-Innodb_buffer_pool_reads)/Innodb_buffer_pool_read_requests*100%
- Innodb_buffer_pool_read_requests: 从缓冲池读取的次数
- Innodb_buffer_pool_reads: 从物理磁盘读取的次数
数据库可用性
- 周期性连接数据库服务器并执行 select @@version;
- Nysqladmin -uxxx -pxxx -hxxx ping
阻塞
-
< MySQL5.7 SELECT b.trx_mysql_thread_id AS "被阻塞线程",b.trx_query AS "被阻塞 SQL",c.trx_mysql_thread_id AS "阻塞线程",c.trx_query AS "阻塞 SQL",(UNIX_TIMESTAMP()-UNIX_TIMESTAMP(c.trx_started)) AS "阻塞时间" FROM information_schema.innodb_lock_waits a JOIN information_schema.innodb_trx b ON a.requesting_trx_id=b.trx_id JOIN information_schema.innodb_trx c ON a.blocking_trx_id=c.trx_id WHERE (UNIX_TIMESTAMP()-UNIX_TIMESTAMP(c.trx_started))>30
-
= MySQL5.7 SELECT waiting_pid AS "被阻塞线程",waiting_query AS "被阻塞 SQL",blocking_pid AS "阻塞线程",blocking_query AS "阻塞 SQL",wait_age AS "阻塞时间",sql_kill_blocking_query AS "建议操作" FROM sys.innodb_lock_waits WHERE (UNIX_TIMESTAMP()-UNIX_TIMESTAMP(wait_started))>30
死锁
-
show engine innodb status
-
pt-deadlock-logger u=xx,p=xxxx,h=127.0.0.1 --create-dest-table --dest u=xx,p=xxx,h=127.0.0.1,D=crn,t=deadlock
-
set global innodb_print_all_deadlocks=on
监控慢查询
- 通过慢查询日志监控
- 通过 information_schema.
PROCESSLIST
表实时监控
监控主从延时
- show slave status (Seconds_Behind_Master)
- pt-heartbeat --user=xx --password=xxx -h master --create-table --database xxx --update --daemonize --interval=1
- pt-heartbeat --user=xx --password=xxx -h slave --create-table --database crn --monitor --daemonize --log /tmp/slave_lag.log
监控主从状态
- show slave status (Slave_IO_Running,Slave_SQL_Running,Last_Errno,Last_Error)
欢迎扫描下方二维码,持续关注:
互联网工程师(id:phpstcn),我们一起学习,一起进步
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341