实际上MySQL数据库就是个软件,它其实就是用编程语言写的一套数据库管理软件而已,底层就是磁盘来存储数据,基于内存来提升数据读写性能,然后设计了复杂的数据模型,帮助我们高效的存储和管理数据。所以MySQL数据库软件都是安装在一台linux服务器上的,然后启动MySQL的进程,就是启动了一个MySQL数据库。
MySQL运行过程中,它需要使用CPU、内存、磁盘和网卡这些硬件,但是不能直接使用,都是通过调用操作系统提供的接口,依托于操作系统来使用和运行的,然后linux操作系统负责操作底层的硬件。如下图所示:
一般来说,很多数据库部署在机器上的时候,存储都是搭建的RAID存储架构,其实这个RAID很多人以为非常的深奥,确实这个概念比较难以理解,而且说深了其实里面的技术含量很高,但是如果简单说一下,也是每个人都能理解的。说白了,RAID就是一个磁盘冗余阵列,什么意思呢?
假设服务器里的磁盘就一块,那万一 一块磁盘的容量不够怎么办?此时是不是就可以再搞几块磁盘出来放在服务器里?
现在多搞了几块磁盘,机器里有很多块磁盘了,不好管理啊,怎么在多块磁盘上存放数据呢?
所以就是针对这个问题,在存储层面往往会在机器里搞多块磁盘,然后引入RAID这个技术,大致理解为用来管理机器里的多块磁盘的一种磁盘阵列技术!
有了它以后,你在往磁盘里读写数据的时候,它会告诉你应该在哪块磁盘上读写数据,如下图:
有了RAID这种多磁盘阵列技术之后,是不是就可以在一台服务器里加多块磁盘,扩大磁盘存储空间了?
当往磁盘里写数据的时候,通过RAID技术可以帮助我们选择一块磁盘写入,在读取数据的时候,我们也知道从哪块磁盘去读取。除此之外,RAID技术很重要的一个作用,就是它还可以实现数据冗余机制。
所谓的数据冗余机制,就是如果你现在写入了一批数据在RAID中的一块磁盘上,然后这块磁盘现在坏了,无法读取了,那么岂不是你就丢失了一波数据?如下图所示:
所以其实有的RAID磁盘冗余阵列技术里,是可以把你写入的同样一份数据,在两块磁盘上都写入的,这样可以让两块磁盘上的数据一样,作为冗余备份,然后当你一块磁盘坏掉的时候,可以从另外一块磁盘读取冗余数据出来,这一切都是RAID技术自动帮你管理的,不需要你操心,如下图:
所以RAID技术实际上就是管理多块磁盘的一种磁盘阵列技术,它有软件层面的东西,也有硬件层买的东西,比如有RAID卡这种硬件设备。具体来说,RAID还可以分成不同的技术方案,比如RAID 0、RAID 1、RAID 0+1、RAID2,等等,一直到RAID 10,很多种不同的多磁盘管理技术方案。