# mysqldumpslow -t 3 /var/log/mysql/mysql-slow.log #查看最慢的前三个查询
也可以使用percona公司的pt-query-digest工具,日志分析功能全面,可分析slow log、binlog、general log。
分析慢查询日志:
pt-query-digest /var/log/mysql/mysql-slow.log
分析binlog日志:
mysqlbinlog mysql-bin.000001 >mysql-bin.000001.sql pt-query-digest –type=binlog mysql-bin.000001.sql
分析普通日志:
pt-query-digest –type=genlog localhost.log
5.3 数据库备份
备份数据库是最基本的工作,也是最重要的,否则后果很严重,你懂得!但由于数据库比较大,上百G,往往备份都很耗费时间,所以就该选择一个效率高的备份策略,对于数据量大的数据库,一般都采用增量备份。常用的备份工具有mysqldump、mysqlhotcopy、xtrabackup等,mysqldump比较适用于小的数据库,因为是逻辑备份,所以备份和恢复耗时都比较长。mysqlhotcopy和xtrabackup是物理备份,备份和恢复速度快,不影响数据库服务情况下进行热拷贝,建议使用xtrabackup,支持增量备份。
5.4 数据库修复
有时候MySQL服务器突然断电、异常关闭,会导致表损坏,无法读取表数据。这时就可以用到MySQL自带的两个工具进行修复,myisamchk和mysqlcheck。
myisamchk:只能修复myisam表,需要停止数据库。
常用参数:
-f –force 强制修复,覆盖老的临时文件,一般不使用-r –recover 恢复模式-q –quik 快速恢复-a –analyze 分析表-o –safe-recover 老的恢复模式,如果-r无法修复,可以使用此参数试试-F –fast 只检查没有正常关闭的表快速修复weibo数据库:
# cd /var/lib/mysql/weibo # myisamchk -r -q *.MYI
mysqlcheck:myisam和innodb表都可以用,不需要停止数据库,如修复单个表,可在数据库后面添加表名,以空格分割
常用参数:
快速修复weibo数据库:
mysqlcheck -r -q -uroot -p123 weibo
5.5 另外,查看CPU和I/O性能方法
查看CPU性能

参数-P是显示CPU数,ALL为所有,也可以只显示第几颗

查看I/O性能

参数-m是以M单位显示,默认K。
%util:当达到100%时,说明I/O很忙。await:请求在队列中等待时间,直接影响read时间。I/O极限:IOPS(r/s+w/s),一般在1200左右。(IOPS,每秒进行读写(I/O)操作次数)I/O带宽:在顺序读写模式下SAS硬盘理论值在300M/s左右,SSD硬盘理论值在600M/s左右。以上是本人使用MySQL三年来总结的一些主要优化方案,能力有限,有些不太全面,但这些基本能够满足中小型企业数据库需求。由于关系型数据库初衷设计限制,一些BAT公司海量数据放到关系型数据库中,在海量数据查询和分析方面已经达不到更好的性能。因此NoSQL火起来了,非关系型数据库,大数据量,具有高性能,同时也弥补了关系型数据库某方面不足,渐渐大多数公司已经将部分业务数据库存放到NoSQL中,如MongoDB、HBase等。数据存储方面采用分布式文件系统,如HDFS、GFS等。海量数据计算分析采用Hadoop、Spark、Storm等。这些都是与运维相关的前沿技术,也是在存储方面主要学习对象,小伙伴们共同加油吧!哪位博友有更好的优化方案,欢迎交流哦。