数据库迁移的关键流程

远看山有色 2022-04-12 10:23:11

所谓数据库迁移就是一个数据库到另一个数据库之间的任意形式的数据移动。

本文从热迁移和冷迁移的概念以及基本迁移流程简单分享一下:

一、数据库迁移主要分为热迁移和冷迁移:

1、热迁移是将内存数据和硬盘数据同步进行迁移。热迁移的优势在于其对用户业务的影响是非常小的;热迁移对内存数据进行了迁移,用户业务应用对其是无感知的。而缺点是热迁移的过程是不可中断的,整个操作过程相对复杂。

2、冷迁移就是在关机迁移。优势是整个冷迁移过程的操作简单,一般为自动化操作。但其缺点是该方式不支持内存数据的保存,容易导致内存数据的丢失。

二、数据库迁移关键流程

数据库迁移的工程按照进度可以划分为前期规划、中期实施和后期运维3个阶段,具体可以分为源数据库及应用系统调研、兼容性和风险评估、可行性验证、全面业务改造、全面业务测试、割接演练、迁移执行、业务验证、正式割接和护航保障10个关键环节,如下图

1源数据库及应用系统调研:

源数据库及应用系统调研有助于后续深入评估改造点和工作量,有利于定位系统迁移过程中的难点和风险,其调研内容可以分为源数据库、应用系统、数据库和应用系统3个方面。 

(1)源数据库调研:需要考虑数据库结构、数据类型、数据库性能、数据使用场景4部分基础数据。数据库结构和数据类型是静态数据,可以通过语法、语义比对完成调研;数据库性能和数据使用场景是动态数据,与其对应的业务属性、数据库硬件资源、数据库自有能力、数据属性和应用系统属性直接相关。 

(2)应用系统调研:主要是发现应用和数据库之间的调用关系和调用方式,厘清应用各个模块与数据库调用SQL的兼容特点,明确应用在各个模块转换的改造点。通过调用SQL详情实现改造点定位,即交互SQL点定位。 

(3)数据库与应用系统调研:数据库与应用系统的关联关系通常包含但不限于数据复制链路、API结构调用等内容,其架构关系的梳理是迁移流程的重中之重,需要投入大量人力物力。掌握源数据库和应用的结构、架构、性能、关系拓扑,有助于后续决策。

2、兼容性和风险评估

调研完成后,进入兼容性和风险评估环节。兼容性评估工作宜从结构语法分析、结构语义分析、上下文环境兼容分析几方面进行;风险评估工作主要包括目标库性能风险、数据一致性风险、应用改造风险、时间窗口风险和上线误操作风险五大方面。

3、可行性验证

充分调研和评估后,迁移工程进入到可行性验证环节,即POC测试。其流程可划分为4个阶段:其一,选取业务中典型的交易模块,制定POC测试内容;其二,准备、部署POC测试环境;其三,根据POC预设,完成测试需求;其四,POC测试总结。针对数据库的特性,在可行性验证过程中需重点关注几个方面:其一,异常场景下事务是否一致;其二,异常场景下副本是否一致;其三,异常场景下大批量已提交事务回滚是否对系统有影响;其四,锁冲突较多的场景下是否对系统有影响;其五,副本数据的时延是否满足系统要求。验证结束后,需出具可行性验证报告,说明应用系统迁移至数据库是否可行,以及相关注意事项,为后续迁移工作打好基础。

4全面业务改造

改造工作繁琐,需要对业务逻辑、应用程序、源和目标数据库相关语法规则进行深入了解,为保证改造有效进行,宜遵循3个原则:其一,业务改造过程中需要谨慎地规划以及选取良好的方法,结合数据库产品自身技术特点,进行一系列数据库及应用程序的调整;其二,业务改造宜遵循从宏观到微观、从整体到局部、自顶向下的方式;其三,宜遵循先实现再调优的原则,性能调优需根据实际软硬件环境和业务场景,一次或者多次调整。

业务改造可以从几个方面依次进行:首先是数据类型,目标数据类型范围和精度应不小于源数据类型,以确保业务数据不会丢失,且目标数据类型范围和精度应避免超大于源数据类型,以免带来性能下降。其次是函数,改造场景可能会遇到函数同名,但在源数据库和目标数据库功能不同或不完全相同;函数同名,但参数隐式转换规则不同;函数同名,但参数个数或者参数类型不同;函数不同名,但功能相同;无对应函数,需通过其他方式实现。最后是语法规则,除了应当遵循ANSI或ISO的SQL标准语法,数据库方言的使用难以避免,因此需要将源数据库自身支持的语法规则调整为目标数据库的语法规则。

5全面业务测试

测试环节是迁移关键环节的重中之重,需要投入大量的时间和资源,稍有不慎,可能会导致后续的迁移失败、数据丢失甚至是业务中断、混乱的灾难性后果。全面业务测试通常包含功能测试、性能测试、稳定性测试、可靠性测试、扩展能力测试、安全能力测试、回退方案验证等。测试环节的典型测试类型及测试项如下:

6割接演练

割接演练是针对正式迁移前,模拟真实上线环境下,对系统进行的压力测试和破坏性测试,主要分为割接方案制定、压力测试和破坏性测试、测试总结、新旧系统同步互备和切换演练5部分。割接方案中应包含系统备份方案、应急预案、回退方案,明确割接的操作步骤、操作时间和操作人员,对新系统实施压力测试和破坏性测试,模拟在最极端环境下新系统功能的完整性、稳定性和高可靠性。正式割接前的备份工作必不可少,在新环境上线前务必做好旧程序包的保留和数据同步,以便在紧急情况可以快速回退。切换演练需制定切换检查清单,演练期间严密监控容灾数据库的系统负载、异常等待事件等内容。

7、迁移执行

迁移执行宜按照最少改动的数据库结构和应用系统SQL代码;完整、准确的数据对象及数据迁移;最短的业务中断的原则进行,其包含的流程如图2所示。

 

迁移环境检测包含主机环境检测、网络环境检测和数据库环境检测。结构迁移是指将源数据库的建表语句迁移到目标端不同数据库中,迁移完成保证源、目标数据库中的建表语句功能、性能等价使用。数据迁移分为全量数据迁移和增量数据迁移。迁移结束环境确认需要重建序列、启用触发器和收集执行计划等。构建数据回流是为保证业务迁移后目标数据库切换为生产库出现故障无法持续对外提供业务时,保证目标端已经变化的数据能够迁移回流到原来的生产库,并保证业务不中断。 

8业务验证

业务验证分为迁移数据验证和业务功能验证。从源数据库导入到目标数据库中的历史数据文件可以按主键顺序进行组织,以文本文件的方式卸载迁移数据,并确保导出数据能够按照主键有序输出。对导入文件和导出文件分别进行比较操作,通过比对结果是否一致,完成迁移数据的一致性验证。业务功能验证分为运行过程比对、运行结果比对和静态数据比对。 

(1)运行过程比对:通过在原和新应用系统前端增加网络镜像分流设备,将发往原应用系统的网络数据镜像分流到新应用系统中,使用覆盖实际交易场景的大量生产数据进行连续测试。在运行过程中,解析目标、源数据库中的日志文件,根据流水号、主键、时间等唯一性标识,比对日志文件中新旧值的变化,找出异常过程,达到验证目标系统数据正确性与一致性目的。 

(2)运行结果比对:在原应用系统和新应用系统前端增加网络镜像分流设备,将发往原应用系统的网络数据镜像分流到新应用系统中,将目标、源数据库返回的结果信息保存到文件或数据库中,根据流水号、主键、时间等唯一性标识,比对目标、源数据库的交易结果。

(3)静态数据比对:根据源数据库的每日备份时间,在目标数据库做相同时刻的备份操作,备份完成后,将两份备份文件导入到比对库中,按表逐条比对两份数据一致性以及每张表的数据总量,验证目标系统数据的正确性与一致性。

9、正式割接

割接前通常需要至少3次割接演练,以确保割接过程中各个环节没有疏漏,并根据不同业务系统情况制定割接流程,分配每个流程责任人,通关制完成各个环节。正式割接环节分为生产环境准备和按照割接方案正式执行割接两部分。 

10、护航保障

迁移完成后,最危险的环节是切换后生产环境的第一个业务高峰,需要配置专业的数据库专家,快速响应应用和数据库出现的突发问题。之后,需要定期跟踪一定时间,以保障业务系统的稳定运行。最终的护航时间,需要根据实际情况确定。如果遇到突发情况,在无法处理的情况下,应依据回退方案和演练细则逐步完成回退。

 

欢迎补充~

 

 

...全文
1965 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

79,546

社区成员

发帖
与我相关
我的任务
社区描述
汇集数据库的爱好者和关注者,大家共同学习、探索、分享数据库前沿知识和技术,像松鼠一样剥开科学的坚果;交流Gauss及其他数据库的使用心得和经验,互助解决问题,共建数据库技术交流圈。
数据库数据仓库 企业社区 北京·海淀区
社区管理员
  • Gauss松鼠会
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎大家同时关注Gauss松鼠会专家酷哥。

https://www.zhihu.com/people/ku-ge-78-98

试试用AI创作助手写篇文章吧