李毕生
作者李毕生·2024-05-09 12:00
金融解决方案架构师·华为技术有限公司

国产分布式数据库推荐核心系统用服务器本地盘承载,真的靠谱吗?

字数 2541阅读 362评论 0赞 0

近日,与一用户交流核心和A类系统改造方案,客户计划将A类重要系统数据库采用国产分布式数据库+外置企业存储来承载,确保安全可靠,目前也是成熟方案。而真正的Core banking核心数据库采用服务器本地盘多副本来承载。我一听就纳闷了,最重要的核心数据库当前可是EMC、HDS高端存储承载,一下就跳到可靠性最差的服务器本地盘了,这是哪里想不开吗?就因为国产数据库厂商的推荐和最佳实践吗?(所谓的最佳实践有经历8年的时间运行证明稳定可靠吗?)。谁来保障盘、RAID等数据空间的安全可靠呢?我问,Oracle/DB2用PC服务器本地盘多副本,大家谁敢用来承载核心数据库呢?数据库处于文件系统之上,它管不了底层存储系统硬件逻辑和问题,甚至连盘在哪个地方都不知道,看到的就是OS生成的一个一个盘符,再创建VG、LV、及文件系统之上,数据库下面连有几块盘都不知道,检测哪块盘有问题就只能去例测读写文件系统级,根本就不知道是哪块盘的粒度?为啥现在国产数据库厂商这么大胆的推荐用服务器本地盘承载核心数据库呢?是负责任的推荐方案吗?3年或者5年后这些部件故障率大幅上升,不是把用户往火坑里推吗?数据库厂商负责兜底背锅吗?

其实国产数据库采用本地盘面临巨大的安全稳定、可靠性问题,见上图。盘是有很多种故障模式的,比如:

1)慢盘,SSD频繁出现几十ms甚至100ms慢盘怎么快速识别和快速隔离,避免1块慢盘拖慢整个系统。曾经1用户频繁出现100ms时延的慢IO,国产O数据库就傻傻的等着,业务挂住。而企业存储发现IO 时延20ms频繁出现持续超过30秒,就将此盘改为亚健康降级状态,IO通过RAID降级读写,不会发给此盘,后台在线诊断隔离掉。

2)盘超时,通用OS的IO超时时间是30秒,Hang住进行错误处理,再重试5次,是很差的处理机制,会导致业务挂住数分钟,进而导致数据库切节点,而外置专业存储10几年前就发现了linux源码的此BUG,都重构了块设备系统,识别到3秒IO就通过RAID降级读返回,后台去进行超时处理和在线诊断,甚至将SSD盘上下电看能不能挽救回来,很多时间电子设备重新上下电就好了。踢盘是很谨慎的,频繁踢盘可能导致多盘失效,影响数据安全,十几年前HW存储研发也曾犯过简单粗暴踢盘的错误,后来成立了研究盘的部门,研究各种故障模式该怎么检测和处理。而现在数据库们何止踢盘,它是扩散到踢服务器节点,可能也不知道是什么原因就很简单粗暴的崩崩崩的踢,3年后、5年后故障上升怎么办?

3)单盘失效、双盘失效,某些数据库厂商竟然推荐不做RAID,为了所谓的低时延竟然忽视更要命的稳定可靠。一块盘故障就切数据库节点,导致业务hang几十秒,然后重建副本,还自诩为最佳实践!双盘失效、三盘同时失效就可能业务断了。而右边采用存算分离方案单盘失效、双盘失效、甚至三盘同时失效,系统都通过RAID进行故障修复,数据库节点不会切换,不会导致数据库重建副本这些复杂的运维操作。

4)SSD盘颗粒是类似于充放电的机制,磨损有次数的,如果热点数据频繁擦写一块盘,短时间可能就坏了,所以SSD是要靠软件磨损均衡算法以及ROW重定向写的软件架构等来避免某些盘过度磨损而损坏。最近听一用户讲NVMe SSD盘不到两年寿命就到90%破损率了,需要批量更换,出现类似问题有大量核心数据库怎么办呢?数据库来负责吗?

5)静默错误,bit翻转导致数据不一致。SSD内部或者链路传输过程中,可能出现1变0或者0变1跳变导致数据问题,所以10几年前标准协议定义了端到端的DIF方案,所有盘格式化为520字节,512字节的数据后面放了8字节的校验数据,存储系统发送和接收主机和盘的数据会去检测这个校验值对不对,发现不一致就会报错,会通过RAID其它成员去纠正,避免提供给主机的数据块有问题导致上面文件系统损坏,进而数据库损坏。最近也有用户出现此bit翻转导致文件系统损坏,进而数据库损坏问题,概率是低,但是一出现就没有逃生通路。

6)SSD盘也可能有FW BUG的,原来存储系统是有专门研究评测盘的工程师以及仪器工具来检测,FW版本经过大量测试质量OK集成到存储系统升级,而现在各种厂商的SSD盘挂在服务器上,FW BUG谁来评测?怎么升级?手工干吗?可能都需要用户自己来操作了。

7)SSD盘供应可靠风险,服务器整机厂商的SSD部件供应来源是不可控的,低价意味着低品质,问题是要承载核心数据库,品控风险其实很高。


难以想象,核心数据库从高可靠稳定的高端闪存直接落到服务器本地盘,如上图,可靠性持续下滑,几年之后带来多大的风险,盘一定会坏的,而且随着时间越长,故障上升,批次故障怎么防范,数据库、通用OS、服务器及盘厂商都会推、拖、拉,不会负责兜底的,目前不少用户,出了问题就会事不关己,就推给网络,服务器,盘的厂商。毫无疑问,这个巨大的风险最终是转移给数据中心运维部门来承担!

很多时候,Oracle下面的核心存储换成HW的高端存储,很多用户都担忧是否可靠,多控冗余+双活加持,也怕出问题,不愿意换,而现在在某些数据库厂商的骚操作下,一下干到服务器本地盘多副本,是通用的OS管盘,数据库自己也不管,服务器部件可是顶多4个9的可靠性,专业的企业存储系统6个9的可靠性,完全不一样的逻辑。真的是一个混沌的时代,分布式数据库厂商还自诩为最佳实践!听闻一用户不断探索纠结为啥E高端闪存会在某些场景出现5ms时延,是不是可靠性有问题,而分布式数据库几十秒的切换时间就不care,无所谓,快速切了呀,还带来复杂的副本重建操作,难以想象!

Oracle用服务器本地盘,ADG也可以写多副本,为啥不会推荐呢?其实人家管好自己的数据库,为啥要推荐不可靠的数据空间呢?不是给自己找事儿让自己睡不好觉吗?下面的硬件出问题一定会影响数据库的业务切换及恢复操作。而现在数据库被逼着要做好下层存的可靠管理,切换操作、运维管理等做一遍,那数据库的复杂度就更高,也做不好数据库的本质工作了。有高可靠存储来管盘和RAID,管空间的安全可靠,数据库才能安心对接业务,安心踏实睡觉,这是是专业的公司干专业的活的核心逻辑。Oracle/DB2是为客户负责任的玩法,不专业的领域人家不会碰的。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广