MySQL:34 数据库服务器上的RAID存储架构的电池充放电原理
Posted 鮀城小帅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL:34 数据库服务器上的RAID存储架构的电池充放电原理相关的知识,希望对你有一定的参考价值。
服务器使用多块磁盘组成的RAID阵列的时候,一般会有一个RAID卡,这个RAID卡是带有一个缓存的,这个缓存不是直接用服务器的主内存的那种模式的,而是一种和内存类似的SDRAM,当然也可认为他是基于内存来存储的。
当我们把RAID的缓存模式设置为 write back,这样的话,所有写入到磁盘阵列的数据,会先缓存到RAID卡的缓存里,后续再慢慢写回磁盘阵列里去。这种写缓冲机制可以大大提高数据库磁盘的写性能。
缓存丢失的问题
假设突然断电了,或者服务器自己故障关闭了,那么这个RAID卡的缓存里的数据会丢失吗?此时mysql写入磁盘的数据是否会丢失?(注意:此时还未写入磁盘)
以上的两个问题是可能存在的,也正是为了解决这种问题,RAID卡一般都配置有独立的锂电池或者是电容,如果服务器突然掉电了,在无法接通电源的情况下,RAID卡自己会基于锂电池来供电运行,然后赶紧把缓存里的数据写入到阵列中的磁盘上去。
由于锂电池是存在性能衰减问题的,所以需要配置定时充放电的,根据厂商不同每隔30天~90天不等,会自动对锂电池充放电一次,这可以延长锂电池的寿命和校准电池容量。
定时充放电可以保证锂电池电量充足,避免无法一次性把缓存里的数据都写回磁盘上去,那就会导致数据丢失了。
充放电导致的性能抖动问题
在锂电池冲放电的过程中,RAID的缓存级别会从write back变成 write through,我们通过RAID写数据的时候,IO就直接写磁盘了,如果写内存的话,性能也就是0.1ms这个级别。但是直接写磁盘,性能就退化10倍到毫秒级了。
所以在生产环境中,一旦RAID锂电池自动充放电,往往会导致你的数据库服务器的RAID存储定期的性能出现几十倍的抖动,简介导致你的数据每隔一段时间就会出现性能几十倍的抖动。
以上是关于MySQL:34 数据库服务器上的RAID存储架构的电池充放电原理的主要内容,如果未能解决你的问题,请参考以下文章
MySQL:35 RAID锂电池充放电导致的MySQL数据库性能抖动的优化