美文网首页
MySQL主从复制监控

MySQL主从复制监控

作者: 滨岩 | 来源:发表于2020-03-15 08:49 被阅读0次

    Mysql主从复制监控

    如何监控主从复制链路的状态,主要是监控 Slava_IO_Running 与 Slave_SQL_Running

    image.png

    如何监控主从复制延迟,参与复制的主从服务器之间一定会存在着一些延迟。如果发现从服务器之间的延迟持续的增大,就需要及时发现并对数据库进行监控

    show slave status 查看Seconds_Behind_Master ,Seconds_Behind_Master表示slave落后master的秒数,但在网络非常糟糕的情况下这个数字并不准确

    image.png

    所以一般用另外的方法来监控主从复制的延迟,这个方法需要使用多线程的程序对于主从服务器的状态来进行检查。
    通过show master status \G 查看主上的二进制日志文件名和偏移量。

    image.png

    同样我们通过在从上执行"show slave status",查看从上的二进制日志文件名和偏移量 Master_Log_File 、Read_Master_Log_Pos :相对于主库,从库读取主库的二进制日志的位置,是IO线程

    image.png

    以及已经传输完成的主上二进制日志的名字和偏移量 Exec_Master_Log_Pos :相对于主库,是从库的sql线程执行到的位置 、Relay_Log_Space :当前relay-log文件的大小


    image.png

    如果对比发现文件名相同,且文件位置相同,说明不存在任何延迟,当每次修复完主从复制,都要检查主从复制数据的一致性。

    如何验证主从复制的数据是否一致

    pt-table-checksum工具,下面为pt-table-checksum的连接方式:

    pt-table-checksum u=dba,p='Password' \
    --databases mysql \
    --replicate test.checksums
    
    GRANT SELECT,PROCESS,SUPER,REPLICATION SLAVE ON *.* TO 'dba@ip'  IDENTIFIED BY 'Password'
    
    

    另外值得注意的是pt-table-checksum 只需要在从库上执行就可以了。

    数据库监控

    常用的工具 包括Nagios、Zabbix

    数据库监控

    有很多工具 包括Nagios、Zabbix

    对数据库服务可用性进行监控

    通过网络连接到数据库并且确定数据库是可以对外提供服务的。这样才能保证数据库是可用的

    如何确认数据库是否可以通过网络连接
    可以使用MYSQL本地的SQL文件->连接数据库服务器
    网络TCP/IP 协议->MYSQL

    mysqladmin -umonitor_user -p -h ping
    telnet ip db_port
    使用程序通过网络建立数据库连接---这也是最好的方式,因为它可以模拟应用真实的方式,比如druid 的 validationQuery 健康检查:select 1;

    可以连接到数据库,并不代表数据库是可用的

    如何确认数据库是否可读写
    1、检查数据库read_only 参数是否为off,定期对主从服务器中的主服务器这个参数进行检查,万一主从切换了,就没法写数据了。
    2、建立监控表并对表中数据进行更改,当然这些更改是比较简单的,防止监控表的更改对数据库造成压力
    3、执行简单的查询 select @@version,如果只检查数据库是否可读

    如何监控数据库的连接数
    可以连接到MYSQL的线程数是有限制的,那么后续的请求都不会在工作中了,有很多因素会造成数据库的连接数突然的增长,比如:出现阻塞,像memcahce、redis这样缓存失效,都会造成mysql数据库连接数短时间的暴增。
    所以要时刻关注数据库连接数量的变化;

    可以通过下面的步骤来监控数据库的连接数:

    查看mysql 数据库最大连接数
    show variables like 'max_connections';

    当前打开的连接的数量
    show global status like 'Threads_Connected';

    当Threads_connected/max_connections>0.8时,需要报警,然后让DBA查看是什么原因造成数据库连接数突然暴涨,避免造成数据库因为数据库连接超额,而无法连接数据库。

    对数据库性能进行监控

    对QPS 和TPS 进行监控
    并发线程数量
    如何对Innodb阻塞和死锁进行监控

    记录向监控过程中所采集到的数据库的状态

    如何计算QPS和TPS

    QPS=(Queries2-Queries1)/(Uptime_since_flush_status2-Uptime_since_flush_status1);

    TPS=((Com_insert2+Com_update2+Com_delete2)-(Com_insert1+Com_update1+Com_delete1))/(Uptime_since_flush_status2-Uptime_since_flush_status1)

    如何监控数据库的并发请求数量

    数据库系统的性能会随着并发处理请求数量的增加而下降
    CPU使用率

    数据库高并发的请求数量可以通过下面的方式查看

    show global status like 'Threads_running'

    并发处理的数量通常会远小于同一时间连接到数据库的线程的数量

    数据库出现大量阻塞,就会把数据库的连接数占满

    如何监控Innodb 的阻塞

    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))>60;

    select connection_id(); 可以查看当前连接id是多少

    set gobal innodb_lock_wait_timeout=180;

    image.png image.png

    对主从复制进行监控

    主从复制链路状态的监控
    主从复制延迟的监控
    定期的确认主从复制的数据是否一致

    对服务器资源的监控

    1、磁盘空间监控
    2、服务器磁盘空间大并不意味着MySQL数据库服务能使用的空间就够大,尤其是对MySQL数据库所使用的分区的磁盘进行监控
    3、CPU使用情况,内存的使用情况,Swap分区的使用情况以及网络IO的情况等。

    相关文章

      网友评论

          本文标题:MySQL主从复制监控

          本文链接:https://www.haomeiwen.com/subject/ccztehtx.html