高性能MySQL:RAID性能优化

作者:港云互联 时间:2019-12-30

        存储引擎通常把数据和索引都保存在一个大文件中,这意味着用RAID (RedundantArrayofInexpensiveDisks,磁盘冗余阵列)存储大量数据通常是最可行的方法。RAID可以帮助做冗余、扩展存储容量、缓存,以及加速。但是从我们看到的些优化案例来说,RAID 上有多种多样的配置,为需求选择一个合适的配置非常重要。



        我们不想覆盖所有的RAID等级,或者深人细节来分析不同的RAID等级分别如何存储数据。关于这个主题有很多好资料,在一些书籍和在线文档可以找到。因此,我们专注于怎样配置RAID来满足数据库服务器的需求。最重要的RAID级别如下:

高性能MySQL:RAID性能优化


RAID 0



        如果只是简单地评估成本和性能,RAID0是成本最低和性能最高的RAID配置(但是,如果考虑数据恢复的因素,RAID 0的代价会非常高)。因为RAID 0没有冗余,建议只在不担心数据丢失的时候使用,例如备库或者因某些原因只是“一次性”使用的时候。典型的案例是可以从另一台备库轻易克隆出来的备库服务器。再次说明,RAID 0没有提供任何冗余,即使R在RAID中表示冗余。实际上,RAID 0阵列的损坏概率比单块磁盘要高,而不是更低!



RAID 1



        RAID1在很多情况下提供很好的读性能,并且在不同的磁盘间冗余数据,所以有很好的冗余性。RAID在读上比RAID0快一些。它非常适合用来存放日志或者类似的工作,因为顺序写很少需要底层有很多磁盘(随机写则相反,可以从并发中受益)。这通常也是只有两块硬盘又需要冗余的低端服务器的选择。RAID 0和RAID 1很简单,在软件中很好实现。大部分操作系统可以很简单地用软件创建RAID0和RAID1。



RAID 5



        RAIDS有点吓人,但是对某些应用,这是不可避免的选择,因为价格或者磁盘数量(例如需要的容量用RAID 1无法满足)的原因。它通过分布奇偶校验块把数据分散到多个磁盘,这样,如果任何一个盘的数据失效,都可以从奇偶校验块中重建。但如果有两个磁盘失效了,则整个卷的数据无法恢复。就每个存储单元的成本而言,这是最经济的冗余配置,因为整个阵列只额外消耗了一块磁盘的存储空间。



        在RAID5上随机写是昂贵的,因为每次写需要在底层磁盘发生两次读和两次写,以计算和存储校验位。如果写操作是顺序的,那么执行起来会好一些,或者有很多物理磁盘也行。另外说一下,随机读和顺序读都能很好地在RAID5下执行。RAID 5用作存放数据或者日志是一种可接受的选择, 或者是以读为主的业务,不需要消耗太多写I/O的场景。



        RAID 5最大的性能消耗发生在磁盘失效时,因为数据需要重分布到其他磁盘。这会严重影响性能,如果有很多磁盘会更糟糕。如果在重建数据时还保持服务器在线服务,那就别指望重建的速度或者阵列的性能会好。如果使用RAID5,最好有一些机制可以做故障迁移,当有问题的时候让-台机器 不再提供服务,另一台接管。 不管怎样,对系统做一下故障 恢复时的性能测试很有必要, 这样就可以知道故障恢复时的性能表现到底如何。如果一块磁盘失效,RAID组在重建过程中,会导致磁盘性能下降,使用这个存储的服务器整体性能可能会不成比例地被影响到慢两倍到五倍。



        RAID5的奇偶校验块会带来额外的性能开销,这会限制它的可扩展性,超过10块硬盘后RAID 5就不能很好地扩展,RAID 缓存也会有些问题。RAID 5的性能严重依赖于RAID控制器的缓存,这可能跟数据库服务器需要的缓存冲突了。



        尽管RAID 5有这么多问题,但有个有利因素是它非常受欢迎。因此,RAID控制器往往针对RAID 5做了高度优化,虽然有理论极限,但是智能控制器充分利用高速缓存使得RAID 5在某些场景下有时可以达到接近RAID 10的性能。实际上这可能反映了RAID 10的控制器缺少很好的优化,但不管是什么原因,这就是我们所见到的。



RAID 10



        RAID 10对数据存储是个非常好的选择。它由分片的镜像组成,所以对读和写都有良好的扩展性。相对于RAID5,重建起来很简单,速度也很快。另外RAID 10还可以在软件层很好地实现。



        当失去块磁盘时, 性能下降还是比较明显的,因为条带可能成为瓶颈。性能可能下降为50%具体要看工作负我。 需要注意的件事是, RAID控制器对RAID10采用了种“串联镜像”的实现,这不是最理想的实现,由于条带化的缺点是“最经常访问的数据可能仅被放置在一对机械磁盘 上.而不是分布很多份,”所以可能会遇到性能不佳的情况。



RAID 50



        RAID 50由条带化的RAIDS组成,如果有很多盘的话,这可能是RAID 5的经济性和RAID 10的高性能之间的一个折中。 它的主要用处是在放非常庞大的数据集, 例如数据仓库或者非常庞大的OLTP系统。


新人注册,即送价值满880元现金劵

立即注册>>
客服 电话 反馈 活动 回顶部

服务热线

+852-5764-9835

1对1贴心服务,7X24小时热线