1. IO层面检查

 
(1)IO检查
 

查看%util是否接近100%定位是哪个磁盘IO压力大

#iostat -x 1 10
(2)iotop定位负载来源进程
查看哪个PID占用IO最高
#iotop
(3)pt-ioprofile定位负载来源文件
查看哪个文件的IO占用时间最多
#pt-ioprofile  --profile-pid=3712 --cell=sizes
 
 
2.文件系统层面检查
(1)查看当前系统的I/O调度
假如MySQL数据文件存放在sda1里,不同的磁盘则选择不同的IO调度策略

# cat /sys/block/sda/queue/scheduler

(2)查看文件系统

查看MySQL数据文件存放的文件系统是否为xfs或者ext4
#mount
 
3.linux内核参数检查

# cat /etc/sysctl.cnf

4.收集MySQL数据库基本信息

(1)收集OS基本信息

#pt-summary

(2)查看MySQL统计信息

#pt-mysql-summary --user=root --password=123456 --host=127.0.0.1 --port=3306

(3)查看用户数据库的存储引擎

mysql>select count(*) as cnt,table_schema,engine from information_schema.tables where table_schema not in('mysql','information_schema','PERFORMANCE_SCHEMA') group by table_schema,engine order by cnt desc;

(4)查看所有表的存储引擎

mysql>select table_schema,table_name,engine,TABLE_ROWS,AVG_ROW_LENGTH,DATA_LENGTH,INDEX_LENGTH from information_schema.tables where table_schema not in('mysql','information_schema','PERFORMANCE_SCHEMA') order by table_schema,TABLE_ROWS desc;

(5)查看线程状态
mysql> show full processlist;

(6)如果第5步有不少SQL经常能看到,把那些SQL的执行计划也收集下,以及相应表的DDL
mysql> explain select....
mysql> show create table table_name;
mysql> show index from table_name;

(7)提供慢日志统计结果
mysqldumpslow slow.log > slow-stat.log
slow.log文件名改成你真正的慢日志文件名

(8)查看死锁

监控死锁

#pt-deadlock-logger--ask-pass --run-time=10 --interval=3 --create-dest-table --dest D=test,t=deadlocks u=root,P=3306,h=127.0.0.1
查看死锁
mysql>select *  from deadlocks\G;

5.检查主从同步
(1)从库检查同步状态
检查Slave_IO_Running和Slave_SQL_Running是否都为YES
mysql>show slave status\G;

首先Master_Log_File和Relay_Master_Log_File所指向的文件必须一致。

其次Relay_Log_Pos和Exec_Master_Log_Pos的为止也要一致才行。

(2)主从数据校验

mysql数据校验
主库执行
pt-table-checksum -uroot  --ask-pass --recursion-method=processlist --recurse=1  --no-check-binlog-format --nocheck-replication-filters --resume --max-lag=10
 
从库:
select * from percona.checksums where master_cnt <> this_cnt OR master_crc <> this_crc OR ISNULL(master_crc) <> ISNULL(this_crc);

6.PXC集群检查

(1)查看Galera集群每个节点状态

mysql>show status like 'wsrep%';

wsrep_cluster_status状态为Primary

wsrep_connected为ON

wsrep_cluster_state_uuid:在集群所有节点的值应该是相同的
wsrep_local_state_comments是否为 Synced 表示节点处于工作状态
 
(2)查看每个节点的4567端口
#lsof -i :4567
查看每个节点的4567端口和其他节点都是互通的
 
7.MHA检查
(1)检查启动的状态
masterha_check_status --conf=/etc/masterha/app1.cnf
 
 

(2)masterha_check_ssh验证ssh信任登录是否成功

masterha_check_ssh --conf=/etc/masterha/app1.cnf

(3)masterha_check_repl验证mysql复制是否成功

masterha_check_repl --conf=/etc/masterha/app1.cnf
 
8.查看日志
(1)查看报错日志

mysql> show variables like 'log_error';

#cat mysqlerr.log |grep -i -C 5 ERROR

(2)查看备份日志

MySQL深度巡检的更多相关文章

  1. mysql常规巡检

    mysql常规巡检   目录 一.巡检脚本 二.下载巡检脚本 三.脚本执行说明 1.inspection.conf 使用说明 2.inspection_mysql.sh 使用说明 3.mysqltun ...

  2. [sql]大型网站MySQL深度优化揭秘

    大型网站MySQL深度优化揭秘 第1章优化的思路和线路 1.1 网站优化的思路    2 1.2 MySQL优化,nginx这样的东西怎么优化? 第2章硬件层面优化 2.1 数据库物理机 2.1.1 ...

  3. mysql 深度分页

    mysql  分页查询使我们常见的需求 ,但是随着页数的增加查询性能会逐渐下降,尤其是到深度分页的情况.我们可以把分页分为两个步骤,1.定位偏移量,2.获取分页条数的 数据. 所以当数据较大页数较深时 ...

  4. mysql 深度解析auto-increment自增列"Duliplicate key"问题

    转载自:https://cloud.tencent.com/developer/article/1367681 问题描述 近期,线上有个重要Mysql客户的表在从5.6升级到5.7后master上插入 ...

  5. mysql深度优化与理解(迄今为止读到最优秀的mysql博客)

    转载:https://www.cnblogs.com/shenzikun1314/p/6396105.html 本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如 ...

  6. 百万级数据下的mysql深度解析

    首先,数据量大的时候,应尽量避免全表扫描,应考虑在 where 及 order by 涉及的列上建立索引,建索引可以大大加快数据的检索速度.但是,有些情况索引是不会起效的: 1.应尽量避免在 wher ...

  7. 更换163的yum源

    1.利用oss的文件目录形式进行各地项目的汇总保存.上报在A目录,统计过的放到B目录. 2.各地服务器健康状态检查,每5分钟检查项目,    如果有异常,就发短信+邮件进行汇报.不管是不是有异常,都以 ...

  8. 上亿数据怎么玩深度分页?兼容MySQL + ES + MongoDB

    面试题 & 真实经历 面试题:在数据量很大的情况下,怎么实现深度分页? 大家在面试时,或者准备面试中可能会遇到上述的问题,大多的回答基本上是分库分表建索引,这是一种很标准的正确回答,但现实总是 ...

  9. 如何做到MySQL的高可用?

    本课时的主题是“MySQL 高可用”,主要内容包含: 什么是高可用性 MySQL 如何提升 MTBF MySQL 如何降低 MTTR 避免单点失效 基础软硬件避免单点 MySQL 高可用架构选型 故障 ...

随机推荐

  1. php内部函数

    strpos函数 /** haystack:被比较字串首地址(指向被比较字符串) needle:源字串首地址(指向源字符串) needle_len:源字符串长度 end:指向最后一个字符地址的下一个内 ...

  2. 使用Microsoft Web Application Stress Tool对web进行压力测试

    Web压力测试是目前比较流行的话题,利用Web压力测试可以有效地测试一些Web服务器的运行状态和响应时间等等,对于Web服务器的承受力测试是个非常好的手法.Web 压力测试通常是利用一些工具,例如微软 ...

  3. js删除数组指定元素

    删除js数组中制定的元素,这里用到了jquery. var a = new Array("a","b","cc","d3" ...

  4. SQL Server群集如何在线检测

    SQL Server群集知识介绍 Windows群集安装 基于iSCSI的SQL Server 2012群集测试 前言 群集的检测是调用dll资源,例如对于共享存储,ip,网络名称与DTC 这类Win ...

  5. vi 的使用

    Vi 分三种模式:一般模式,编辑模式,和命令模式 一般模式: 光标移动,搜索与替换,删除,复制,粘贴 编辑模式:插入或者替换文本 命令模式:读取.保存文件 一般模式 光标移动: h(左), j(下), ...

  6. Servlet和CGI的区别

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销 ...

  7. Yii rbac原理和实践

    Yii框架中集成分层的 RBAC,代码位于vendor\yiisoft\yii2\rbac中,rbac工作原理分为两部分,建立授权数据和进行权限检查. 如上,一个角色拥有某个权限,如果希望用户拥有这个 ...

  8. MongoDB数据库未授权访问漏洞及加固

    1.漏洞危害 开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增删改高危动作)而且可以远程访问数据库. 2.漏洞成因 在刚安装完毕的 ...

  9. html5 json的新用法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. lanmp之二 (奇葩问题)

    ps:该篇是接 lanmp -- 动静分离 lanmp -- 奇葩问题 话说,在 搭建 bbs.abc.com (discuz论坛)的 时候.... 1.说明:web机器上以前已经有一个 discuz ...