作为一名 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 将不可用。

(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-0

Size                : 278.875 GB

Is VD emulated      : No

Mirror Data         : 278.875 GB

State               : Optimal

Strip Size          : 64 KB

Number Of Drives    : 2

Span Depth          : 1

Default 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: No

Bad 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-0

Size                : 2.180 TB

Is VD emulated      : Yes

Mirror Data         : 2.180 TB

State               : Optimal

Strip Size          : 64 KB

Number Of Drives per span   : 2

Span Depth          : 3

Default 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: No

Bad 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|grep 'Cache Policy'

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

Default Cache Policy: WriteBack, ReadAdaptive, Direct, Write Cache OK if Bad BBU

Current Cache Policy: WriteBack, ReadAdaptive, Direct, Write Cache OK if Bad BBU

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

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-5

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

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

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。

mysql数据库raid_MySQL数据库Raid存储方案相关推荐

  1. MySQL数据库Raid存储方案

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

  2. 日均数据量千万级,MySQL、TiDB 两种存储方案的落地对比

    盖娅广告匹配系统(GaeaAD)用于支撑盖娅互娱全平台实时广告投放系统,需要将广告数据和游戏 SDK 上报的信息进行近实时匹配,本质上来说需要实时的根据各个渠道的广告投放与相应渠道带来的游戏玩家数据进 ...

  3. HBase实战 | 从MySQL到HBase:数据存储方案转型的演进

    作者介绍 杨宏志,知乎首页架构负责人,主要负责首页工程化建设.工程架构优化.性能提升等工作.知乎专栏:https://zhuanlan.zhihu.com/c_195355141 本文转载自dbapl ...

  4. 从MySQL到HBase:数据存储方案转型的演进

    一.集群化方案 1.MySQL应用的演化 MySQL与HBase说到最核心的点,是一种数据存储方案.方案本身没有对错.没有好坏,只有合适与否.相信多数公司都与MySQL有着不解之缘,部分学校的课程甚至 ...

  5. mysql存储value_MySQL key/value存储方案(转)

    需求 250M entities, entities表共有2.5亿条记录,当然是分库的. 典型解决方案:RDBMS 问题:由于业务需要不定期更改表结构,但是在2.5亿记录的表上增删字段.修改索引需要锁 ...

  6. 开源日志审计系统_一文掌握mysql数据库审计特点、实现方案及审计插件部署教程...

    概述 数据库审计(简称DBAudit)能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警,对攻击行为进行阻断.它通过对用户访问数据库行为的记录.分 ...

  7. mysql 数据迁移_【AWS 功能】Mysql 数据库迁移至Amazon RDS方案

    今天,我们讲讲如何使用源MySQL数据库执行数据库迁移到MySQL数据库的目标Amazon RDS的方案,同时由于(源和目标数据库引擎是相同的)--模式结构.数据类型和数据库代码在源和目标数据库之间是 ...

  8. mysql 参照完整性规则_详解mysql数据库审计特点、实现方案及审计插件部署演示...

    概述 数据库审计(简称DBAudit)能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警,对攻击行为进行阻断.它通过对用户访问数据库行为的记录.分 ...

  9. mysql数据库应用模式与特点_MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述...

    MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...

最新文章

  1. 合并两个对象 java_在Java中合并两个对象列表8
  2. Java中Math类常用函数总结
  3. html 显示不吃,长期不吃晚饭,或有4个变化出现,自查一下,看看你占了几个
  4. ubuntu14 备份
  5. 嵌入式中的 *(volatile unsigned int *)0x500 解释
  6. python 数据库操作 yeild from_Python数据库连接关闭
  7. 【手把手带你学nRF52832/nRF52840 · 开发环境搭建】
  8. .NET Core + JWT令牌认证 + Vue.js 通用动态权限(RBAC)管理系统框架[DncZeus]开源啦!!!...
  9. 关于知识图谱,我们接下来该研究什么?斯坦福教授们给出了答案
  10. 数据 正则化 python_python3.6怎么单独正则化/标准化DataFrame中的指定列数据
  11. 接口测试基础知识学习
  12. 中文的括号和英文的括号区别_家庭教育的困惑 (数学,中/英文)
  13. eoe·Android 开发门户 - android开发者的必备网站
  14. mysql int类型为null_MySQL INT类型可以为非零NULL吗?
  15. android休眠 wifi 断流,WiFi断流算什么!安卓8.0曝出重大bug,严重多了
  16. 如何学好C和C++?怎么学习C/C++?学习C和C++的技巧是什么?
  17. 7.TCP/IP 详解卷1 --- Ping 程序
  18. 《redis设计与实现(第二版)》
  19. 函数接口Inside COM读书笔记-----调度接口与自动化
  20. Segment Tree Beats(吉司机线段树)

热门文章

  1. 织梦php版本升级格式出错,织梦CMS升级后出现 ?/a或?/h3导致网页错乱的解决方法...
  2. 云原生Cloud Native
  3. 人到中年摆饭局,千万莫请这3种人,何必费力不讨好,让自己做主
  4. 今天买到了邱吉尔《第一次世界大战回忆录》
  5. IMGame化解游戏行业信任危机
  6. nat配置(网络地址转换)
  7. Anaconda在windows环境下走代理
  8. Android自定义下拉刷新动画--仿百度外卖下拉刷新
  9. 如何让你的计算机无线网卡和有线网卡同时使用
  10. Typora字体颜色修改