按图索骥,再谈数据库迁移之路

【按图索骥,再谈数据库迁移之路】数据库迁移,是个老生常谈的问题,之前也曾写过一篇文章 。近期,针对这一课题,自己有了些新的思考,下面将具体展开谈谈 。在这之前,我先谈谈数据库迁移的现实需求 。这也算是目前行业发展的一个小总结 。
1. 背景:迁移之源,多变之秋
人生基本上就是两件事,选题和解题 。最好的人生是在每个关键点上,既选对题,又解好题 。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题 。正如人生最大的遗憾就是,不是你不行,而是你本可以 。
? 数据规模大幅增加
近些年来,信息数据呈快速增长态势 。如下图所示,全球数据量总和,预计将从 2018 年的 33ZB 增至 2025年的 175ZB 。国内数据体量在未来 7年将实现复合增速 30%以上的快速增长,并在 2025年成为与欧洲、中东、非洲、亚太和美国等地区相比体量最大的区域 。数据的爆发式增长,导致对数据存储容量、数据计算需求有个更好的要求,这也催生企业在基础设施层面不断革新,进而不断推动数据库向前进一步发展 。
从数据库市场来看,也验证了这一趋势 。整体市场呈现稳定的发展趋势,最近的数据表明,国内的数据库市场已经达到200亿规模 。
? 开源方案,大行其道
开源数据库,其源代码具备全球共享、免费等特点,开发者可在其源码中修改或使用 。在近一、二十年来,越来越多的企业将开源方案作为构建底层支持的可选答案 。特别是随着互联网的兴起,大量互联网企业选择使用了开源数据库产品,也加速这些产品的成熟与发展 。这其中MySQL、、 和 Redis 是当前开源数据库最为重要的参与者 。
? 数据上云,大势所趋
从2017至 2018年,整个数据库市场增长了 18.4%,其中云数据库增长贡献 68% 。以AWS、、为代表的云厂商,取得了快速发展,极大地重塑了全球供应商格局 。国内互联网科技巨头,纷纷布局数据库产业,借力云计算实现数据库等基础软件领域的迭代与超越 。如下图的数据库规模排名,云数据库厂商均取得不俗的增长,最新数据则更是如此 。甚至有机构预测,今明两年从数据库部署形态上看,云部署数据库会超过传统部署方式 。
? 国产化趋势明显
正如下图所示,国内数据库市场仍然为欧美垄断,但国产化趋势已非常明显 。以国产自研或开源定制路线的厂商层出不求,从最新的调查结果来看,已经有130+的国产数据库厂商初选 。
从一叶扁舟到百舸争流,传统国产数据库历经长时间艰难探索,已逐步崭露头角 。国外大厂长期垄断国内数据库市场 。、IBM和 等老牌厂商凭借先发优势在市场份额中占据了有利地位 。国产数据库起步较晚,但潜力巨大 。正如下图可见,国产数据库占比正不断增加 。
? 总结:多种变化,驱动迁移
综上所述,从数据规模体量的增大,到开源商业的变化,再到云化趋势明显、国产化趋势加剧;而这些变化都带来同一个诉求,那就是数据库迁移 。展开来说,是如何完成异构数据库迁移?完成体系架构完全不同的数据库之间的迁移(例如从单机到分布式)?完成从线下到云上的迁移?完成在线的、不终端业务的迁移?等等 。诸多上述问题,对迁移提出了非常高的要求 。本文下面尝试从迁移的多个阶段来阐述,需要哪些能力才能完成这一过程 。
2. 数据库迁移之路
人生基本上就是两件事,选题和解题 。最好的人生是在每个关键点上,既选对题,又解好题 。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题 。正如人生最大的遗憾就是,不是你不行,而是你本可以 。
在实际的迁移中,是一个比较复杂的过程,可根据阶段做个拆解 。
1).迁移评估阶段
此阶段是完成迁移前的评估,为后续迁移改造、迁移过程做好铺垫工作
? 数据库画像
数据库画像结果,可为后续选型评估、架构规划提供依据 。
? 应用画像
应用画像结果,为后面应用改造做好铺垫 。
? 风险评估
针对上面收集的数据库、应用画像信息,针对重点风险点做出评估 。
? 选型建议
根据上面收集信息及风险评估内容,给出选型的建议 。这里存在几个难点,一个是多目标数据库的基础能力抽象,一个是两者的适配评估 。功能上包括两部分:
2).迁移改造阶段
? 对象改造
这一阶段主要是通过结构映射及不兼容提示,来减少改造工作量 。
? 语句改造
这一阶段主要通过语句改写,减少改造工作量;同时提供增强功能,满足语句改造后的测试等需求 。
? 应用改造
此处应用是指数据内置的计算能力(如存储过程等) 。这一阶段主要是通过逻辑改写,减少人工工作量 。在实现上,一般建议使用外部程序逻辑(如java)进行处理,而不是改造为目标端内部计算应用 。原因是尽量减少数据库耦合 。此处,存在较多难点,且需要人工检查改造后的语义是否正确 。
3).迁移数据阶段
? 全量/增量数据迁移
完成异构数据库间的数据迁移工作 。主要难点是效率、准确性 。
? 数据对比
见后面说明
4).在线运行阶段
? 数据同步
在线运行时,需提供数据库端的异构同步能力,满足业务随时回迁的需求 。
? 数据对比
数据对比,是用户对比双线运行的基本要求,需要满足实时对比并兼顾效率 。
? 数据路由
数据路由,为业务提供统一数据库访问入口,并基于此提供双路控制能力,可做到按流量、按读写、按访问类别(生产、测试)等做数据访问路由 。
? 基础运维
此部分的能力比较多,本质就是同时提供异构数据库在线同步运维能力 。例如包括统一变更、统一导入导出、统一授权、统一审计等 。尽量从运维侧角度来看,后面是一套逻辑库 。
韩锋频道: