运维相关

[MySQL FAQ]系列 -- 新手必看:一步到位之InnoDB

前言:MySQL发展到今天,InnoDB引擎已经作为绝对的主力,除了像大数据量分析等比较特殊领域需求外,它适用于众多场景。然而,仍有不少开发者还在“执迷不悟”的使用MyISAM引擎,觉得对InnoDB无法把握好,还是MyISAM简单省事,还能支持快速COUNT(*)。本文是由于最近几天帮忙处理discuz论坛有感而发,希望能对广大开发者有帮助。

1. 快速认识InnoDB
InnoDB是MySQL下使用最广泛的引擎,它是基于MySQL的高可扩展性和高性能存储引擎,从5.5版本开始,它已经成为了默认引擎。
InnODB引擎支持众多特性:

a) 支持ACID,简单地说就是支持事务完整性、一致性; 
b) 支持行锁,以及类似ORACLE的一致性读,多用户并发;
c) 独有的聚集索引主键设计方式,可大幅提升并发读写性能;
d) 支持外键;
e) 支持崩溃数据自修复;

InnoDB有这么多特性,比MyISAM来的优秀多了,还犹豫什么,果断的切换到InnoDB引擎吧 :)

2. 修改InnoDB配置选项
可以选择官方版本,或者Percona的分支,如果不知道在哪下载,就google吧。
安装完MySQL后,需要适当修改下my.cnf配置文件,针对InnoDB相关的选项做一些调整,才能较好的运行InnoDB。
相关的选项有:

在线计算IOPS

在线计算IOPS的工具,选择硬盘型号,设定条带大小、硬盘总数、读写比例等信息,即可快速计算出IOPS值,非常实用。
http://www.wmarow.com/strcalc/

SAS vs SSD各种模式下MySQL TPCC OLTP对比测试结果

在各种测试组合方案中,组合10(组合10:SSD * 2, RAID 0, XFS,WB,nobarrier,noop)的综合性能最高,因此以它为基准,其他方案与其对比,下表是各组合和组合10的对比:

相应的对比线形图:

测试环境:

不同容量硬盘创建raid 10阵列案例解析

情景:
在DELL 5/i或6/i阵列卡中,有2块146G盘(插槽号0 ~ 1),4块300G盘(插槽号2~5),共6块。
现在想要创建raid 10阵列,那么最后阵列总容量是多大呢?

解析:
按照常规理解,这种模式下,应该是以最小硬盘的容量为准,既146*3 = 438G的容量。
但实际上,却并非如此,而是:146+300*2 = 746的容量,这是为什么呢?

其实产生这个结果是个凑巧,因为此时的阵列是这样做的:

0 ó(镜像) 1 => 条带1
2 ó(镜像) 3 => 条带2
4 ó(镜像) 5 => 条带3

TPCC-MySQL使用手册

一、 下载工具包
Tpcc-mysql是percona基于tpcc衍生出来的产品,专用于mysql基准测试,其源码放在bazaar(Bazaar是一个分布式的版本控制系统,采用 GPL 许可协议,可运行于 Windows、GNU/Linux、UNIX 以及 Mac OS 系统之上。Bazaar 由 Canonical 公司(Ubuntu母公司)赞助)上,因此还需要先安装bazaar客户端。

使用root安装rpm包

rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

然后就可以开始安装bzr客户端了:

yum install bzr 

之后,就可以开始用bzr客户端下载tpcc-mysql源码了。

cd tmp
bzr branch lp:~percona-dev/perconatools/tpcc-mysql

二、编译安装
编译非常简单

cd /tmp/tpcc-mysql/src
make

然后就会在 /tmp/tpcc-mysql 下生成 tpcc 命令行工具 tpcc_load 、 tpcc_start

DELL 32位诊断工具PEDIAGS使用

DELL PowerEdge Diagnostics 是一款简单实用、基于操作系统的硬件诊断工具!通过它,您可以很清楚的了解DELL系统的硬件健康状况,更有效的判断和定位硬件问题。
该工具是一款安全、免费的软件,您可以从DELL公司的网站上下载它。
1. 下载安装
下载无需多说,目前主要使用dell-pediags-linux-2.8.0.398-A01.tar.gz 版本,直接解压缩,然后执行安装脚本:bash install.sh

2. 使用
由于服务器大多没有启动 X window,因此我们使用字符界面的方式

./pediags --show all 列出可供检测的设备

同样磁盘数,不同raid级别的随机IO性能差异对比

测试结果曲线图:

小结:
1. 如果应用以随机IO为主的话,应使用raid 1+0,在相同硬盘数量情况下,其性能约是raid 5的1.4(+)倍
2. 随机IO越大,raid 5的性能下降越厉害,在本次测试中,有好几次较大IO时,测试进程无响应

附:
Sysbench测试io方法:

【分享】- 关注硬盘预警信息

有一次在做MySQL数据库更新时,发现DML更新效率特别低,总能发现超过1秒的慢日志,一般很少会出现这种情况,初步判定为可能网络故障或者就是DB服务器自身的性能出现问题导致。

经过检查服务器状况,发现确实发生了硬件故障,主要是raid 10中的一块硬盘发生预警,信息如下:

【分享】- crontab异常未执行原因

近期碰到个问题,服务器上线后,crontab都发生异常没有自动执行,查看了下日志,发现问题:

Apr 16 11:26:01 imysql.cn crond[28354]: (*system*) BAD FILE MODE (/etc/cron.d/flushhost)
Apr 16 11:26:01 imysql.cn crond[28354]: (root) BAD FILE MODE (cron/root)

检查了下 /etc/cron.d/ 目录下的其他文件,发现 flushhost 的属性是 755,其他的则是 644,于是将这个脚本属性也改成644,问题解决。

另外,还同时修改了mysql安装包的install.sh脚本,新服安装完毕后,修改flushhost脚本的属性为644。

这个问题貌似只在个别版本的RHEL下碰到过,并不是所有的版本都有。

页面

Subscribe to RSS - 运维相关