你好,游客 登录
背景:
阅读新闻

MySQL数据库Raid存储方案

[日期:2018-05-02] 来源:ITPUB  作者: [字体: ]

  作为一名 DBA,选择自己的数据存储在什么上面,应该是较基本的事情了。但是很多 DBA 却容易忽略了这一点,我就是其中一个。之前对 raid 了解的并不多,本文就记录下学习的 raid 相关知识。

  一、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 将不可用。

  (RAID0)A=(DriveA1+DriveA2)(Striped)

  (RAID0)B=(DriveB1+DriveB2)(Striped)

  (RAID-1)AB=(A+B)(Mirrored)

  先做 RAID-1,再做 RAID-0:每两块磁盘先做 RAID-1,在此基础上,再把两个 RAID-1 做成 RAID-0。这时只有 A 类或者 B 类磁盘两个都故障时,整个 RAID 才不可用。

  (RAID-1)A=(DriveA1+DriveA2)(Mirrored)

  (RAID-1)B=(DriveB1+DriveB2)(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

  Adapter0--VirtualDriveInformation:

  VirtualDrive:0(TargetId:0)

  Name:

  RAIDLevel:Primary-1,Secondary-0,RAIDLevelQualifier-0

  Size:278.875GB

  IsVDemulated:No

  MirrorData:278.875GB

  State:Optimal

  StripSize:64KB

  NumberOfDrives:2

  SpanDepth:1

  DefaultCachePolicy:WriteBack,ReadAhead,Direct,NoWriteCacheifBadBBU

  CurrentCachePolicy:WriteBack,ReadAhead,Direct,NoWriteCacheifBadBBU

  DefaultAccessPolicy:Read/Write

  CurrentAccessPolicy:Read/Write

  DiskCachePolicy:Disabled

  EncryptionType:None

  DefaultPowerSavingsPolicy:ControllerDefined

  CurrentPowerSavingsPolicy:None

  Canspinupin1minute:Yes

  LDhasdrivesthatsupportT10powerconditions:Yes

  LD'sIOprofilesupportsMAXpowersavingswithcachedwrites:No

  BadBlocksExist:No

  PItype:NoPI

  IsVDCached:No

  VirtualDrive:1(TargetId:1)

  Name:

  RAIDLevel:Primary-1,Secondary-0,RAIDLevelQualifier-0

  Size:2.180TB

  IsVDemulated:Yes

  MirrorData:2.180TB

  State:Optimal

  StripSize:64KB

  NumberOfDrivesperspan:2

  SpanDepth:3

  DefaultCachePolicy:WriteBack,ReadAhead,Direct,NoWriteCacheifBadBBU

  CurrentCachePolicy:WriteBack,ReadAhead,Direct,NoWriteCacheifBadBBU

  DefaultAccessPolicy:Read/Write

  CurrentAccessPolicy:Read/Write

  DiskCachePolicy:Disabled

  EncryptionType:None

  DefaultPowerSavingsPolicy:ControllerDefined

  CurrentPowerSavingsPolicy:None

  Canspinupin1minute:No

  LDhasdrivesthatsupportT10powerconditions:No

  LD'sIOprofilesupportsMAXpowersavingswithcachedwrites:No

  BadBlocksExist:No

  PItype:NoPI

  IsVDCached: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|grep'CachePolicy'

  **********************************************************************************

  DefaultCachePolicy:WriteBack,ReadAdaptive,Direct,WriteCacheOKifBadBBU

  CurrentCachePolicy:WriteBack,ReadAdaptive,Direct,WriteCacheOKifBadBBU

  以上表示采用WriteBack(回写)策略,如果电池坏了也强制写入cache

  DefaultCachePolicy:WriteThrough,ReadAheadNone,Direct,NoWriteCacheifBadBBU

  CurrentCachePolicy:WriteThrough,ReadAheadNone,Direct,NoWriteCacheifBadBBU

  ​

  如果是这个,表示采用 WriteThrough 策略

  Disk Cache Policy : Disabled #表示硬盘的cache,一般这里禁用,防止丢失数据

  复制代码

  2.2)查看电池状态

  [root()@xxxx~]#MegaCli64-adpbbucmd-aall|grep-E'BatteryState|ChargerStatus|isSOHGood|RelativeStateofCharge'

  BatteryState:Operational#电池状态,operational表示正在运行

  RelativeStateofCharge:98%#电池电量,如果低于15%,那么写入策略会由WB转变为WC,IO性能下降,需要关注

  ChargerStatus:Complete#充电情况,表示已完成

  isSOHGood:Yes#不是Yes需要关注

  ​

  三、MySQL 适合的 RAID 存储方案

  通过上面对 RAID 的了解,我们已经知道各级别 RAID 的优缺点,对于 MySQL 数据库的存储,如何选择 RAID 级别呢?

  我们可以根据 MySQL 各种文件类型分别选择,MySQL 数据库重要的文件类型有:

  1、数据文件(frm,ibd):存储核心的数据,非常重要,安全性要求高,同时需要频繁的写入、更新数据,磁盘性能要求也比较高,首先建议物理磁盘是SSD,对于RAID的选择,如果预算足够,建议RAID-10,其次是RAID-5

  2、二进制日志文件:写入非常频繁,写性能要求高,由于从库依赖该文件,安全性也很重要,综合成本考虑,可以用两块SATA硬盘,做成RAID-1即可。

 

  3、redo文件,共享表空间文件:安全性要求高,如果预算足够,RAID-10,通常RAID-1也是可以的,一般而言,redo文件和共享表空间和数据文件存储在一起即可。

收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
热门评论