运维角度浅谈MySQL数据库优化(李振良)

2019-01-05 09:46:22王振洲

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性能

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

#查看I/O性能

#参数-m是以M单位显示,默认K

#%util:当达到100%时,说明I/O很忙。

#await:请求在队列中等待时间,直接影响read时间。

I/O极限:IOPS(r/s+w/s),一般RAID0/10在1200左右。(IOPS,每秒进行读写(I/O)操作次数)

I/O带宽:在顺序读写模式下SAS硬盘理论值在300M/s左右,SSD硬盘理论值在600M/s左右。


以上是本人使用MySQL三年来总结的一些主要优化方案,能力有限,有些不太全面,但这些基本能够满足中小型企业数据库需求。

由于关系型数据库初衷设计限制,一些BAT公司海量数据放到关系型数据库中,在海量数据查询和分析方面已经达不到更好的性能。因此NoSQL火起来了,非关系型数据库,大数据量,具有高性能,同时也弥补了关系型数据库某方面不足,渐渐大多数公司已经将部分业务数据库存放到NoSQL中,如MongoDB、HBase等。数据存储方面采用分布式文件系统,如HDFS、GFS等。海量数据计算分析采用Hadoop、Spark、Storm等。这些都是与运维相关的前沿技术,也是在存储方面主要学习对象,小伙伴们共同加油吧!哪位博友有更好的优化方案,欢迎交流哦。

本文出自 “李振良的技术博客” 博客