MySQL服务器选型攻略

    随着mysql数据库在互联网公司用得越来越多,对应的服务器选型变得极为重要.对于好的服务器选择应该是满足以下几个条件的:1,稳定,数据库服务器是应用的基础,稳定涉及到整个应用的稳定;2,性能,满足业务目标需求;3,成本,由于大部分互联网公司处在成长期,所以对于成本会非常敏感;4,与os和mysql版本的的结合性.5,厂商的口碑和对故障的反应速度.


    由于服务器的主要组成部分就是 cpu,内存,存储,网卡.以下分别从这几个部分来讲述.


1,CPU.由于mysql服务器基本上都是运行在x86平台上的,unix专用芯片不在考虑范围内.cpu市场也仅有intel一家,不同的地方在是在cpu的类型之间做出选择.多核cpu和速度更快的cpu之间进行平衡.一般来说cpu速度更快,单条sql的执行时间就越快(不考虑io因素),但是cpu核数越多并发越好,支持的吞吐量要好.但是考虑到mysql的扩展性的问题,一般超过64cpu(核数*线程)都不能很好的扩展,即使再更多,mysql也无法利用。最新的产品型号有E5-XXXX和最高端的E7-v2系列.


 笔者曾经使用mysql 5.5.33运行在DELL R720(32核,超线程)上做了一个测试,发现最大QPS只能达到110K(sysbench oltp测试),调整各种参数发现,QPS再无法往上增加了,而cpu利用率不超过50%。


2,内存。现在服务器的内存基本上已经可以说是白菜价。几百G的内存早已是司空见惯了.但是需要考虑到mysql数据库的大小,热点数据和连接数等因素.一般在项目前期会有一个数据量的规划,根据这些因素来选择合适的内存大小.原则是尽量保持热点数据在内存中。


3,存储.对于数据库来说存储可能是最影响性能的因素了.一般小项目可以使用服务器自带的存储,做raid即可.中型项目,可以考虑使用专用存储,可以提供较大的存储空间,而且一般带有很大的cache,这样对于mysql在以fsync同步数据时,速度会比较快.对于大型项目,可能服务器很多且io要求很高,使用大型存储可能很难忍受成本代价,这时候一般会考虑分表分服务器,可以使用每服务器自带存储,而形成较大总体io能力.不过对于开发来说可能会有一些挑战。


 值得一提的是现在使用SSD的项目越来越多,SSD由于其较快的iops和并发吞吐能力,非常适合数据库服服务器使用,一般有SATA,SAS和PCIe接口的区别,PCIe的速度最快,当然价格也高.但是SSD也有不利的因素,比如对SSD稳定性有待检验,每GB的价格比较高。


4,网络.现在10G的网络也越来越多了,如果企业没有部署10g网络的话,可以考虑服务器多块1g的网络进行绑定,在增加带宽的同时也增加了冗余。


  服务器厂家目前也就是两个阵营,国外的品牌依次是IBM,HP,DELL.国产品牌有联想,华为.首选国外的品牌,IBM和HP的服务器相对阶格要高,质量要好.DELL的服务器性价比高,使用比较常见.国产的服务器由于其质量,售后支持等,尽量不考虑了. IBM主要有型号有X35xx,X36xx和X38xx系列.HP常见的型号有DL1xx,DL3xx和DL5xx系列.DELL的型号主要有poweredge R5XX,R7XX,R8XX,R9XX系列等.具体详情可参考各大服务器厂商的官方网站