高性能MySQL:RAID的故障转移、恢复和镜像

作者:港云互联 时间:2019-12-31

        RAID配置(除了RAID 0)都提供了冗余。这很重要,但很容易让人低估磁盘同时发生故障的可能性。千万不要认为RAID能提供一个强有力的数据安全性保证。



        RAID不能消除甚至减少备份的需求。当出现问题的时候,恢复时间要看控制器、RAID等级、阵列大小、硬盘速度,以及重建阵列时是否需要保持服务器在线。



        硬盘在完全相同的时间损坏是有可能的。例如,峰值功率或过热,可以很容易地废掉两个或更多的磁盘。然而,更常见的是,两个密切相关的磁盘出现故障。许多这样的隐患可能被忽视了。一个常见的情况是,很少被访问的数据,在物理媒介上损坏了。这可能几个月都检测不到,直到尝试读取这份数据,或另一个硬盘也失效了,然后RAID控制器尝试使用损坏的数据来重建阵列。越大的硬盘驱动器,越容易发生这种情况。

高性能MySQL:RAID的故障转移、恢复和镜像


        这就是为什么做RAID阵列的监控如此重要。大部分控制器提供了-些软件来报告阵列的状态,并且需要持续跟踪这些状态,因为不这么做可能就会忽略了驱动器失效。你可能丧失恢复数据和发现问题的时机,当第块硬盘损坏时, 已经晚了。因此应该配置一个监控系统来提醒硬盘或者RAID卷发生降级或失效了。



        对阵列积极地进行定期一致性检查, 可以减少潜在的损坏风险。某些控制器有后台巡检(Background Patrol Read)功能,当所有驱动器都在线服务时,可以检查媒介是否有损坏并且修复,也可以帮助避免此类问题的发生。在恢复时,非常大型的阵列可能会降低检查速度,所以创建大型阵列时一定要确保制定了相应的计划。



        也可以添加一个热备盘,这个盘一般是未使用状态,并且配置为备用状态,有硬盘坏了之后控制器会自动把这块盘恢复为使用状态。如果依赖于每个服务器的可用性,这是一个好主意。对只有少数硬盘驱动器的服务器,这么做是很昂贵的,因为一个空闲磁盘的成本比例比较高,但如果有多个磁盘,而不设-一个热备盘,就是愚蠢的做法。请记住,更多的磁盘驱动器会让发生故障的概率迅速增加。



        除了监控硬盘失效,还应该监控RAID控制器的电池备份单元以及写缓存策略。如果电池失效,大部分控制器默认设置会禁用写缓存,把缓存策略从WriteBack改为WriteThrough。这可能导致服务器性能下降。很多控制器会通过一个学习过程周期性地对电池充放电,在这个过程中缓存是被禁用的。RAID控制器管理工具应该可以浏览和配置电池充放电计划,不会让人措手不及。



        也许希望把缓存策略设为WriteThrough来测试系统,这样就可以知道系统性能的期望值。也许需要计划电池充放电的周期,安排在晚上或者周末,重新配置服务器修改innodb_flush_logat_trx_commit和syncbinlog变量,或者在电池充放电时简单地切换到另一台服务器。



新人注册,即送价值满880元现金劵

立即注册>>
客服 电话 反馈 活动 回顶部

服务热线

+852-5764-9835

1对1贴心服务,7X24小时热线