近日,与一个金融客户交流,客户说,当前国产数据库其实本质上是数据库分片或者分单元或者分库,单分片一般500GB~1TB,甚至10TB,1主多从多副本,然后主从复制,基于MySQL的TDSQL,GoldenDB采用binlog复制到从节点。针对90%的数据库其实容量就几TB左右,容量真不大,为什么要部署多个分片呢?
其实单分片主从6副本或许就搞定了,有必要部署了几十台服务器来按照分组横向扩展吗?硬件可靠性低,多副本不代表可靠性就好,资源利用率那么低,运维管理也复杂,消耗大量的机房空间,能耗,电费,成本很高。单分片的容量1TB,其实切片很大了,1主5从本质上是主节点承担交易,其它节点查询,并没有真正的做到6个节点均衡,这不就是主备架构吗?怎么就叫分布式架构呢?
同时数据库一般推荐生产1主多从同步复制,同城强同步至少1从,主副本通过binlog复制从副本,从副本需要将SQL逻辑日志进行回放,一位客户跟我讲,目前发现最大的问题是回放时间可能很长,多长不可控,特别是晚上跑批结息时段,回放时间可能超过1小时甚至更长。如果这个时候主节点服务器故障,从节点是需要把逻辑日志数据回放完才能接管业务的,那这个RTO时间就可能高达数小时,业务中断数小时,这个业务中断时间能容忍吗?
同时生产和同城一个集群通过IP 网络同步复制,如果有网络丢包,拥塞,误码抖动,闪断,谁来负责快速隔离呢?毕竟IP网络相比FC网络那肯定质量要差些,数据库怎么处理呢?会不会导致业务性能大幅下降甚至hang死呢?Oracle ADG其实很多是最高性能模式,异步复制,也没有做到同步复制。
其实数据库分布式架构的核心逻辑就是切片打散均衡到各个节点,这个架构在存储系统称为A-A均衡架构:基于LUN空间切片64MB打散轮转工作在各个控制器节点,非副本模式,粒度很小64MB,就实现了每个控制器都能同时承担读和写业务,盘基于RAID切片4MB均衡到各个SSD盘,这细粒度的切片打散才是真正的分布式均衡架构。
存储系统20年前就一直在为之努力,这个星球上能做好AA架构的就那么2~3家厂家(就EMC,华为等),软件架构和硬件架构A-A均衡难度极高。而当下数据库切片1TB级,这么大的切片粒度,还是1主多从多副本,怎么能做到负载均衡呢?如果分片小到MB级,一定带来元数据的大幅膨胀和可靠性加固管理问题。很难想象号称分布式数据库架构,但是内部却是1主多从的主备多副本架构,大家怎么看待这个所谓的分布式架构呢?是不是应该叫分布式主从多副本架构呢?😅😅
文章来源:毕须说