运维角度浅谈MySQL数据库优化(4)

mysql> show global status whereVariable_namein('com_select','com_insert','com_delete','com_update');

计算TPS,就不算查询操作了,计算出插入、删除、更新四个值即可。

经网友对这两个计算方式的测试得出,当数据库中myisam表比较多时,使用Questions计算比较准确。当数据库中innodb表比较多时,则以Com_*计算比较准确。

5.2 开启慢查询日志

MySQL开启慢查询日志,分析出哪条SQL语句比较慢,使用set设置变量,重启服务失效,可以在my.cnf添加参数永久生效。

mysql>setglobal slow-query-log=on #开启慢查询功能

mysql>setglobal slow_query_log_file='/var/log/mysql/mysql-slow.log';#指定慢查询日志文件位置

mysql>setglobal log_queries_not_using_indexes=on;#记录没有使用索引的查询

mysql>setglobal long_query_time=1;#只记录处理时间1s以上的慢查询

分析慢查询日志,可以使用MySQL自带的mysqldumpslow工具,分析的日志较为简单。

# 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数据库:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6748dee49e76edbe61eaf6c0b53c6a70.html