MySQL之普通项目监控

2019-10-26  本文已影响0人  君子愁

对mysql的一些普通的项目进行监控

1.监控mysql进程和端口

ps -ef|grep mysqld

netstat -lntup|grep mysqld

2.监控mysql是否可连接

本地socket连接

/usr/local/mysql/bin/mysql  -uroot -p123456 -S /tmp/socket.sock

tcp连接

mysqladmin -uroot -p123456 -h 192.168.209.131 ping #检测mysql是否可连接

telnet  ip  mysql端口    #检测mysql是否可连接

3.监控mysql的可读可写

连接数据库后,执行select @@version(); #检测数据是否可读

连接数据库后,查看read-only参数是否off

连接数据库后,可创建一个监控库,专门写入数据的,测试数据库是否可写

4.监控QPS(1s查询次数)和TPS(1s事务数)

show global status like 'queries';   #查询mysql启动到现在一共进行了多少次查询

QPS = (Q2 - Q1) / Q2和21之间的时间差

show global status like '%com_commit%';  #查询mysql启动到现在一共进行了多少次事务

show global status like '%com_rollback%';   #查询mysql启动到现在一共进行了多少次事务回滚

TPS = (Com_commit + Com_rollback) / Seconds

show global status like 'uptime';    #查看数据库启动到现在启动了多长时间

5.查看并发连接数量

show variables like 'max_connectins'; #查看数据库最大连接数

show global status like 'Threads_connected'; #查看当前连接线程数是多少

show global status like 'Threads_running';   #查看有多少个线程连接是正在运行的,因为很多线程连接可能是连接上了,但是是sleep的

6.查看阻塞

#查询被阻塞语句(5.7)---通过下面这个语句可查出哪些语句被阻塞了,但是查询不到被那些语句阻塞了它们

SELECT b.trx_mysql_thread_id            AS 'blocked_thread_id'

      ,b.trx_query                      AS 'blocked_sql_text'

      ,c.trx_mysql_thread_id            AS 'blocker_thread_id'

      ,c.trx_query                      AS 'blocker_sql_text'

      ,( Unix_timestamp() - Unix_timestamp(c.trx_started) )

                              AS 'blocked_time'

FROM  information_schema.innodb_lock_waits a

    INNER JOIN information_schema.innodb_trx b

        ON a.requesting_trx_id = b.trx_id

    INNER JOIN information_schema.innodb_trx c

        ON a.blocking_trx_id = c.trx_id

WHERE  ( Unix_timestamp() - Unix_timestamp(c.trx_started) ) > 4;

#查询阻塞语句(5.7)---倒数第二句的c.id=125的125来自第一句语句,查询出正在阻塞的语句是什么。但是这个不准的,因为一个事务里有很多语句,可能第一个语句阻塞了,过了几秒钟,第一个语句执行完了,然后执行第二个语句,第二个语句也阻塞,此时用下面的语句查询源阻塞语句,只会查询到第二句阻塞语句,所以不够准确。

SELECT a.sql_text,

      c.id,

      d.trx_started

FROM  performance_schema.events_statements_current a

      join performance_schema.threads b

        ON a.thread_id = b.thread_id

      join information_schema.processlist c

        ON b.processlist_id = c.id

      join information_schema.innodb_trx d

        ON c.id = d.trx_mysql_thread_id

where c.id=125

ORDER  BY d.trx_started\G;

7.监控主从是否正常

show slave status\G

查看

Slave_IO_Running: Yes

 Slave_SQL_Running: Yes

这两个进程都是yes,说明同步线程正常

查看

Seconds_Behind_Master: 0

要是等于0说明主从延时很小

或者查看

Exec_Master_Log_Pos: 234 =  Read_Master_Log_Pos: 234

那么说明主从延时很小

上一篇 下一篇

猜你喜欢

热点阅读