前阵子约了一位在银行、能源、公共事业项目里摸爬滚打多年的数据库架构师老周,专门聊了聊国产数据库共享存储集群和配套同步工具的真实情况。市面上讲产品的文章很多,但真正把集群的适用边界、落地暗坑、同步校验逻辑讲透的内容不算多。这篇可以看成一份访谈复盘,也掺了我自己跑过的验证和踩过的坑。
先说说这篇适合谁看。第一类是要做国产数据库选型,又说不清“共享存储集群”和“分布式数据库”到底该选谁的架构师;第二类是已经在生产上维护国产库,但对集群部署心里发怵的DBA;第三类是写业务系统的开发,想搞清楚数据库侧到底会给自己埋哪些雷。如果你只是好奇“国产数据库现在行不行”,这篇也能给你一个相对实在的参考视角,至少能看清技术探索到了哪一步。
1. 这次访谈聊了什么:共享存储集群为何从“选择题”变成“必答题”
1.1 老周这几年的主要感受
老周过去很长一段时间都在跟Oracle RAC打交道,最近五六年则一头扎进了国产数据库的交付和运维。他接手过的系统有一个共同特征:原来跑在传统商业数据库上,因为资源规划和业务连续性要求,需要在尽量不动应用代码的前提下,迁移到国产数据库环境。
他反复提的一个现象是:很多客户一开口就问能不能做“集群”。但仔细拆解需求以后会发现,大部分系统真正需要的只是一个“故障时能自动切换、业务不中断”的高可用能力,并不一定非要两个节点同时对外提供服务。真正需要共享存储集群的,通常是那些对“单点故障窗口”极其敏感、又希望保留单库开发体验的核心业务系统。
这个区分特别重要。“共享存储集群”和“一主一备自动切换”虽然都能提供高可用,但它们的架构理念、运维模式、故障切换表现完全不一样,成本也不在一个量级。
1.2 从“主备切换”到“读写无感知”的需求升级
老周的判断是,这几年项目需求的重心发生了一个明显变化。以前做高可用,默认方案是主备库加心跳,切换时间能做到一分钟以内就算不错。现在不少新项目直接把目标定到“秒级切换”,要求应用连接基本无感知,甚至要求两个节点同时对外提供服务。这么一来,很多原来靠复制延迟同步的架构就顶不住了,共享存储集群就成了绕不开的选项。
我问他,为什么不能干脆上分布式数据库?毕竟分布式架构也能解决高可用和扩展问题。老周苦笑说,客户大概率也想过,但分布式带来的第一个挑战就是应用改造。原来一条SQL能完成的关联查询,到了分布式环境里可能要改分片键、改跨节点事务策略,工作量一下子上来了。共享存储集群虽然也复杂,但对业务侧基本透明,应用看到的还是一个普通数据库连接,SQL方言习惯也不需要大动。
这就解释了行情背后的核心逻辑:存量系统的平滑迁移诉求,远大于“我非要换一种新架构”的冲动。共享存储集群本质上是一条中间路线,一边保住了单库体验,一边把高可用能力往上抬了一大截。
1.3 同步工具为什么会和集群一起被讨论
聊到同步工具的时候,我发现很多人会把它和共享存储集群弄混。老周做了个很直白的区分:共享存储集群管的是“同一机房、同一份数据、多个实例同时服务”的问题;同步工具管的则是“数据要从一套库复制到另一套库”的问题,比如跨机房容灾、异构数据库迁移、读写分离、数据汇集。
之所以两类东西总被放在一起谈,是因为很多
