设为首页 收藏本站
查看: 684|回复: 0

[经验分享] MySQL数据库Raid存储方案

[复制链接]

尚未签到

发表于 2018-10-8 10:34:32 | 显示全部楼层 |阅读模式
  一、RAID的基础知识
  【定义】RAID(Redundant Array of Independent Disk)是一种独立冗余磁盘阵列。
  1、为什么要使用RAID?
  我们知道,单块磁盘无论是从性能上、容量上、还是安全上都存在单点问题,如果把多块硬盘组成一个group,当成一个逻辑驱动器,从而实现同时从多块硬盘存取数据,那样可以提高了存储的吞吐量,同时也提高了存取速度和扩大存储容量。
  RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术就是专门干这事的。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响,这对于数据库存储领域是非常必要的。
  2、RAID的几种工作级别
  我们比较常用的RAID级别有RAID-0、RAID-1、RAID-10/RAID-01、RAID-5,其他的如RAID-3、RAID-4、RAID-6就不在此介绍了。

  •   RAID-0
  RAID-0采用数据分条技术(Striped)把多块磁盘串联成一个更为庞大的磁盘组,可以提高磁盘的性能和吞吐量。它读写数据的速度是最快的,要求比较低,要求两个磁盘即可做RAID-0,相对成本是最低的,但是RAID-0不提供冗余或奇偶校验数据的功能,如果驱动器出现故障,数据将无法恢复,安全性最弱。一般只是在那些对性能要求高、数据安全性要求不高的情况下才被使用,不适合数据库的存储。


  •   RAID-1
  RAID-1采用镜像(Mirroring)的方式冗余数据。RAID-1要求至少两个或2xN个磁盘,每次写数据时会同时写入镜像盘。这种阵列可靠性很高,但其有效容量减小到总容量的一半,同时这些磁盘的大小应该相等,否则总容量只具有最小磁盘的大小。RAID-1的数据安全性在所有的RAID级别上来说是最好的。但是其磁盘的利用率却只有50%,是所有RAID级别中最低的。


  •   RAID-10
  由于RAID-0和RAID-1都存在明显的优点和缺点,为了结合两者的优点、避免两者的缺点,从而产生了RAID-10,RAID-10适合用在速度需求高,又要完全容错,当然成本也很多的应用。不过在做RAID-10时需要注意的是先做RAID-1,再做RAID-0还是先做RAID-0,再做RAID-1,二者还是有区别的。举个栗子,假如现在有四块磁盘:
  先做RAID-0,再做RAID-1:每两块磁盘先做RAID-0,在此基础上,再把两个RAID-0做成RAID-1。这时如果A类或者B类磁盘同时有一个故障,整个RAID将不可用。
(RAID 0) A = (Drive A1 + Drive A2) (Striped)  
(RAID 0) B = (Drive B1 + Drive B2) (Striped)
  
(RAID-1)AB = (A +  B) (Mirrored)
  先做RAID-1,再做RAID-0:每两块磁盘先做RAID-1,在此基础上,再把两个RAID-1做成RAID-0。这时只有A类或者B类磁盘两个都故障时,整个RAID才不可用。
(RAID-1) A = (Drive A1 + Drive A2) (Mirrored)  
(RAID-1) B = (Drive B1 + Drive B2) (Mirrored)
  
(RAID-0)AB = (A +  B) (Striped)
  综合上面来看,先做RAID-1,再做RAID-0相对更安全,建议这种方式,所以我们平时说的RAID-10就是先做RAID-1,再做RAID-0

  •   RAID-5
  RAID-5应该处于RAID-0和RAID-1之间的一种工作模式,它尽量平衡RAID-0和RAID-1的优点和缺点,是我们平时使用比较多的一种模式。做RAID-5至少需要三块磁盘,它采用校验码冗余数据,校验信息分布在多个磁盘上,当数据每次写入到磁盘上,同时还需要写入校验信息,因此写入性能相对不如RAID-0。当某个磁盘出现故障,可以使用其他磁盘上校验信息来恢复数据。相对RAID-1,它磁盘空间利用率为(N-1)/N

  3、RAID的几种工作级别优缺点

  【注】以上的高、中、低只是相对于RAID-0、RAID-1、RAID-10、RAID-5而言。
  二、如何判断RAID级别、写入策略、电池状况
  1、判断RAID级别:MegaCli64工具输入磁盘信息如下:

[root()@xxxx ~]# MegaCli64 -LdInfo -lAll -aALL  
                                     Adapter 0 -- Virtual Drive Information:
  
Virtual Drive: 0 (Target Id: 0)
  
Name                :RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0Size                : 278.875 GB
  
Is VD emulated      : No
  
Mirror Data         : 278.875 GB
  
State               : Optimal
  
Strip Size          : 64 KBNumber Of Drives    : 2
  
Span Depth          : 1Default Cache Policy: WriteBack, ReadAhead, Direct, No Write Cache if Bad BBU
  
Current Cache Policy: WriteBack, ReadAhead, Direct, No Write Cache if Bad BBU
  
Default Access Policy: Read/Write
  
Current Access Policy: Read/Write
  
Disk Cache Policy   : Disabled
  
Encryption Type     : None
  
Default Power Savings Policy: Controller Defined
  
Current Power Savings Policy: None
  
Can spin up in 1 minute: Yes
  
LD has drives that support T10 power conditions: Yes
  
LD's IO profile supports MAX power savings with cached writes: NoBad Blocks Exist: No
  
PI type: No PI
  

  
Is VD Cached: No
  

  

  
Virtual Drive: 1 (Target Id: 1)
  
Name                :RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0Size                : 2.180 TB
  
Is VD emulated      : Yes
  
Mirror Data         : 2.180 TB
  
State               : Optimal
  
Strip Size          : 64 KBNumber Of Drives per span   : 2Span Depth          : 3Default Cache Policy: WriteBack, ReadAhead, Direct, No Write Cache if Bad BBU
  
Current Cache Policy: WriteBack, ReadAhead, Direct, No Write Cache if Bad BBU
  
Default Access Policy: Read/Write
  
Current Access Policy: Read/Write
  
Disk Cache Policy   : Disabled
  
Encryption Type     : None
  
Default Power Savings Policy: Controller Defined
  
Current Power Savings Policy: None
  
Can spin up in 1 minute: No
  
LD has drives that support T10 power conditions: No
  
LD's IO profile supports MAX power savings with cached writes: NoBad Blocks Exist: No
  
PI type: No PI
  

  
Is VD Cached: No

  网上有人仅仅通过RAID Level列中的Primary-1, Secondary-0, RAID Level Qualifier-0来判断,我认为不是很准确。先来了解下Primary、Secondary、RAID Level Qualifier啥意思?
  Primary字段:基本上可以确定RAID的级别,但是无法区分是RAID-1和RAID-10,因为有情况下他们的Primary值都是Primary-1, Secondary-0, RAID Level Qualifier-0
  在这种情况下如何区分RAID-1和RAID-10?我认为还得结合另外两列进行判断:
Number Of Drives per span   : 2    #每个区段有2块磁盘Span Depth                  : 3    #一共三个区段结合primary-1,该RAID表示一共六块磁盘,每两个做RAID-1,最后将三个RAID-1做RAID-0  【总结:如何判断RAID级别】:
  1)  除了RAID-1和RAID-10,其他级别通过Primary字段值就可以判断;
  2) 至于RAID-1和RAID-10,还需要结合Number Of Drives (per span)、Span Depth两列的值,如果Span Depth值为1表示为RAID-1,不为1表示RAID-10;还有一种情况:Primary-1, Secondary-3, RAID Level Qualifier-0也是表示RAID-10;
  2、判断RAID写入策略和电池状态
  RAID的写入策略对IO性能有很大影响,有两种写入策略:
WriteBack:表示写入到磁盘缓存上,写入性能好,如果采用此策略,RAID必须支持电池可用,否则一旦断点,数据将丢失。WriteThrough:表示直接写入到硬盘上,写入性能没有WriteBack好,一般没有电池时采用此策略  2.1)查看RAID的写入策略

[root()@xxxx ~]# MegaCli64 -LDInfo -Lall -aALL|  Default Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU
  Current Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU
  如果是这个,表示采用WriteThrough策略
**********************************************************************************Disk Cache Policy   : Disabled     #表示硬盘的cache,一般这里禁用,防止丢失数据
  2.2)查看电池状态
[root()@xxxx ~]# MegaCli64 -adpbbucmd -aall |grep -E  'Battery State|Charger Status|isSOHGood|Relative State of Charge'                        Battery State     : Operational  #电池状态,operational表示正在运行  
Relative State of Charge: 98 %   #电池电量,如果低于15%,那么写入策略会由WB转变为WC,IO性能下降,需要关注
  
Charger Status: Complete         #充电情况,表示已完成
  
isSOHGood: Yes                   #不是Yes需要关注
  三、MySQL适合的RAID存储方案
  通过上面对RAID的了解,我们已经知道各级别RAID的优缺点,对于MySQL数据库的存储,如何选择RAID级别呢?
  我们可以根据MySQL各种文件类型分别选择,MySQL数据库重要的文件类型有:
1、数据文件(frm,ibd):存储核心的数据,非常重要,安全性要求高,同时需要频繁的写入、更新数据,磁盘性能要求也比较高,首先建议物理磁盘是SSD,对于RAID的选择,如果预算足够,建议RAID-10,其次是RAID-52、二进制日志文件:写入非常频繁,写性能要求高,由于从库依赖该文件,安全性也很重要,综合成本考虑,可以用两块SATA硬盘,做成RAID-1即可。3、redo文件,共享表空间文件:安全性要求高,如果预算足够,RAID-10,通常RAID-1也是可以的,一般而言,redo文件和共享表空间和数据文件存储在一起即可。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-616323-1-1.html 上篇帖子: centos7安装 mysql5.7.18-jinchuang 下篇帖子: 优化一个mysql语句
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表