sql学习笔记(19)-----------浅谈MySQL数据库优化(三)

2015-07-24 07:12:45 · 作者: · 浏览: 8
简单。

# 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表都可以用,不需要停止数据库,如修复单个表,可在数据库后面添加表名,以空格分割

常用参数:

-a –all-databases 检查所有的库-r –repair 修复表-c –check 检查表,默认选项-a –analyze 分析表-o –optimize 优化表-q –quik 最快检查或修复表-F –fast 只检查没有正常关闭的表

快速修复weibo数据库:

mysqlcheck -r -q -uroot -p123 weibo

5.5 另外,查看CPU和I/O性能方法

查看CPU性能

从运维角度浅谈MySQL数据库优化

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

从运维角度浅谈MySQL数据库优化

查看I/O性能

从运维角度浅谈MySQL数据库优化

参数-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等。这些都是与运维相关的前沿技术,也是在存储方面主要学习对象,小伙伴们共同加油吧!哪位博友有更好的优化方案,欢迎交流哦。