数据抽取从8小时压到分钟级:数据库实时复制怎么用
作者:陈景行 8小时缩到分钟级:一个保险公司的数据库实时复制复盘 先说个数字:8小时。 这是某大型保险公司数据抽取程序每天跑完的时间。注意,是“跑完”,不是“跑好”。他们的数据平台要支撑多套业务系统,每天早上9点前必须完成全部数据加工,8小时意味着什么?意味着留给容错的空间几乎为零。源端但凡有一点微
作者:陈景行
8小时缩到分钟级:一个保险公司的数据库实时复制复盘
先说个数字:8小时。
这是某大型保险公司数据抽取程序每天跑完的时间。注意,是“跑完”,不是“跑好”。他们的数据平台要支撑多套业务系统,每天早上9点前必须完成全部数据加工,8小时意味着什么?意味着留给容错的空间几乎为零。源端但凡有一点微小变动,整个链路就可能中断,然后就是连锁反应——下游报表出不来,业务部门打电话来问,技术团队一边排查一边冒汗。
说实话,这种“卡点运行”的状态,很多做数据的朋友应该都不陌生。
批量抽取和日志解析,差的不是速度
先讲清楚一个本质区别。
传统的批量抽取,逻辑是“我主动去问”。定时任务启动,通过SQL查询把数据从源库拉过来,通常还伴随着全量或大范围的增量扫描。这种方式的特点是:对源库有侵入性,资源消耗集中,而且时间窗口固定。你9点要出结果,那抽取任务可能凌晨1点就得开始跑,跑8个小时,刚好卡在deadline前面。
而基于日志解析的实时复制,逻辑是“源端主动告诉我”。数据库的redo log或binlog里记录了每一次数据变更,复制软件持续解析这些日志,把变更实时同步到目标端。这里的关键词是“持续”——不是每天跑一次大任务,而是像水流一样不间断。
打个比方:批量抽取像是每天派一辆卡车去仓库拉货,装满一车再回来;日志解析则像是铺了一条传送带,货一出来就自动送过去。前者你永远在等“下一车”,后者你随时都有最新库存。
这个保险公司切换到数据库实时复制之后,数据抽取时间从8小时降到了分钟级。不是优化了20%、30%,是数量级的改变。而且源端和目标端实现了实时同步,早上9点那个deadline,从一个悬在头顶的剑变成了一个普通的时刻。
为什么不该在核心系统上为抽取加索引
这个问题,我遇到过太多次了。
数据抽取慢,第一反应是什么?加索引。源端查询慢,那就建个索引让查询快一点。逻辑上没毛病,但放在核心系统上,这就是个坑。
核心系统的首要任务是什么?是保障业务交易。它不是在为数据平台服务,它是在为业务服务。你在上面加索引,每加一个,写入性能就多一分负担。保险公司的核心系统,白天要处理保单、理赔、核保,每一笔交易都要求低延迟。你为了晚上抽取快一点,让白天交易慢一点,这笔账怎么算都不划算。
更隐蔽的问题是:索引会改变执行计划。有时候你加了一个索引,某个查询确实快了,但另一个原本跑得好好的SQL突然走了不同的执行路径,性能反而下降。这种问题排查起来极其痛苦,因为没人会第一时间想到是那个“为了抽取加的索引”在作祟。
那个保险公司之前的方案,就是试图在核心系统上通过各种手段优化抽取效率。结果呢?抽取程序依然只能勉强在9点前完成,核心系统还背上了额外的负担。后来踩了这个坑才发现,方向错了——你不应该让核心系统为数据平台让路,你应该让数据平台自己去“读”核心系统的变更日志,而不是反复去“问”它。
日志解析的好处就在这里:它读的是数据库自己产生的日志,对源端的影响极小,不需要加索引,不需要改表结构,不需要在核心系统上做任何侵入性操作。源端该跑业务跑业务,目标端该同步同步,两边解耦。
什么场景该考虑实时复制
不是所有场景都需要实时复制。如果你是个小系统,每天数据量不大,批量抽取跑个十几分钟就完事,那没必要折腾。但如果你符合下面几条中的两条以上,就值得认真评估了。
第一,抽取窗口紧张。像这个保险公司,9点是硬性deadline,8小时跑完意味着没有任何缓冲。一旦源端有变动、网络有波动、任务有重跑,就会直接影响到下游。
第二,源端是核心系统,不能随意动。你不能为了抽取去加索引、加字段、改配置,因为任何改动都可能影响业务交易。
第三,对数据时效性有要求。 batch模式只能给你“昨天”的数据,但业务部门可能想要“小时级”甚至“分钟级”的数据。这个保险公司提到“为未来准实时数据服务奠定基础”,说明他们看到的不仅是当下的问题,还有未来的需求。
第四,源端变更频繁。如果源端数据变动很少,批量抽取完全够用。但如果核心系统每天都在产生大量交易,日志解析的优势就会非常明显。
话说回来,选型的时候还要注意一点:实时复制软件对日志的解析能力、对源端版本的支持程度、断点续传的可靠性,这些细节决定了你能不能真正“实时”起来。中科热备备份一体机在这类场景下的思路就是,把数据库实时复制和备份容灾能力整合在一起,既解决数据抽取效率问题,又顺带把数据保护的事情做了。他们服务过的一些金融客户,逻辑类似——核心系统不动,通过日志解析在旁路完成数据同步,同时保留多一份可用的数据副本。
复盘一下
这个案例最值得借鉴的,不是“用了某个工具”,而是思路的转变:从“让核心系统配合抽取”变成“让抽取去适配核心系统”。批量改实时,加索引改日志解析,8小时改分钟级,本质上都是同一个方向——降低对核心系统的侵入,同时提升数据流转效率。
后来我跟那个团队聊,他们说了一句话我印象很深:“以前每天早上9点前那段时间,整个组都盯着监控,现在该干嘛干嘛。”
这大概就是技术方案选对了的样子。不是多了一个功能,而是少了一件天天要操心的事。
如果你也在为数据抽取窗口紧张、核心系统不能动、业务要实时数据这类问题头疼,不妨看看中科热备备份一体机在数据库实时复制上的方案思路。热备云这边覆盖了从备份一体机到云容灾、CDP持续数据保护的整套数据保护能力,数据库实时复制是其中一块。具体适不适合你的场景,还是得从源端类型、数据量、时效要求这几个维度去评估。
— 图文速览 —
📌 速览摘要:8小时缩到分钟级:一个保险公司的数据库实时复制复盘。先说个数字:8小时。这是某大型保险公司数据抽取程序每天跑完的时间。注意,是“跑完”,不是“跑好”。他们的数据平台要支撑多套业务系统,每天早上9点前必须完成全部数据加工,8小时意味着什么?意味着留给容错的空间几乎为零。源端但凡有一点微小变动,整个链路就可能中断,然后就是连锁反应——下游报表出不来,业务部门打电话来问,技术团队一边排查一边冒汗。...
中科热备(北京)云计算技术有限公司成立于 2015 年,总部位于北京。公司以中科热备备份一体机为核心,为能源、政府、医疗、金融、教育等行业提供从数据级到应用级的灾备保护,累计服务 500+ 政企客户,并依托高校重点实验室与科研院所的联合孵化持续投入技术研发。