智慧信息化平台系统开发项目数据迁移方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、概述 (2)
1.1、背景 (2)
1.2、原则 (2)
1.3 、术语与定义 (2)
二、历史数据迁移需求分析 (2)
2.1 、迁移目标 (2)
2.2 、迁移范围 (3)
2.3 、迁移环境准备 (3)
三、数据迁移策略 (3)
3.1 、迁移阶段 (3)
3.2 、数据迁移要求 (3)
3.2.1 、数据迁移前准备 (3)
3.2.2 、数据迁移工具要求 (4)
3.2.3 、数据迁移方式 (4)
3.2.4 、迁移约定 (5)
3.2.5 、数据校验要求 (6)
四、ETL 工具选型 (7)
4.1 、常用ETL 工具介绍 (7)
4.2 、ETL 工具选型建议 (8)
五、数据迁移顺序 (9)
5.1 、系统数据迁移顺序 (9)
5.2 、数据迁移执行顺序 (10)
六、风险分析与保障措施 (12)
6.1 、迁移风险 (12)
6.1.1 、数据风险 (12)
6.1.2 、可靠性风险 (12)
6.1.3 、技术风险 (12)
七、迁移后的测试方案 (13)
7.1 、测试方法和流程 (13)
7.2 、迁移保障措施和应急预案 (13)
八、进行数据摹拟迁移 (13)
九、测试数据摹拟迁移 (13)
十、准备实施数据迁移 (13)
十一、移植系统应用软件 (14)
十二、新老系统并行切换 (14)
十三、正式运行应用系统 (14)
十四、迁移脚本 (14)
智慧平台系统经过需求调研、设计开辟、集成测试环节后,将进入试运行阶段。
而在进入新旧模块上线试运行切换过程中,必然要面临一个数据迁移的问题。
数据迁移对系统切换乃至新模块的运行有着十分重要的意义,数据迁移的质量不仅是新系统成功上线的重要前提,同时也是新系统今后稳定运行的有力保障。
本次数据迁移工作复杂度高、业务数据量大、工作量大,因此必须确保数据导入中的每个环节准确无误地进行。
为顺利实现上述总体目标,本技术方案坚持以下基本原则:
1 、规范性:统一数据迁移方案、数据转换模板、数据迁移策略,规范数据迁移操作,确保数据迁移有序推进。
2、业务联贯性:通过合理编制系统迁移策略、采用相应技术,保证原系统在数据迁移期间业务和应用集成的连续性。
3 、完整性:确保数据迁移后的完整性,避免遗漏。
4 、安全性:充分重视数据安全,防止泄密情况的发生。
ETL:Extraction- Transformation- Loading 的缩写,数据提取、转换和加载工具,常用ETL 工具有Informatic PowerCenter、DataStage 等。
1 、业务不中断。
2 、旧系统的数据资产全部正确迁移到新的数据库。
经调研,老系统目前有采购预算表、采购预算明细、采购预算表历史表、采购需求表、采购需求明细表、采购需求限制表、采购需求质疑表、采购计划表、采购计划明细表、采购计划附件表、采购申报书、采购申报书模板货物清单、立项申请、反馈信息表、反馈信息明细表等495 张表,需要全部正确迁移到新系统数据库。
经评估,在政数局提供的1 台虚拟机上搭建一套oracle 数据库,进行数据库还原和数据迁移,具体配置如下:48G 内存,32 核CPU,500G 存储空间。
本次数据迁移工作分为四个阶段,前期准备阶段、迁移工具开辟阶段、切换准备阶段、正式切换阶段。
1、前期准备阶段完成数据迁移范围、方式、方案的确定;各种数据迁移模板的制定及确认;依据方案开始进行数据的整理、完善。
2 、迁移工具开辟阶段由系统厂商完成迁移工具及脚本的编写、测试工作。
3、切换准备阶段完成现场数据的采集、审核及修改工作;现场数据迁移演练及对发现问题的整改;完成各类数据的最终确认及迁移,对迁移结果的确认及发现问题的整改。
4 、正式切换阶段开始各类数据的补充迁移工作。
数据迁移的大量工作都需要在准备阶段完成,充分而周到的准备工作是完成数据整合迁移的基础。
准备工作包括:旧系统数据的分析、旧系统数据质量分析及清洗、新系统数据字典整理、新旧系统数据差异分析、建立新旧系统数据之间的映射关系。
1 、旧系统数据的分析。
要对旧数据进行迁移,首先要了解旧系统的数据结构,包括表和字段,以及多个表之间的关系,并撰写相应的数据库结构文档。
然后要整理旧系统数据字
典,明确所有数据代码字段含义,将旧系统的数据字典按照统一格式整理成文档。
2 、旧系统数据质量的分析及清洗。
数据质量分析主要是指找出重复、不完整、违反业务或者逻辑规则等问题的数据,并进行相应的清洗操作。
可以分别针对各类旧系统的脏数据开发不同数据整理程序,通过不同的查询语句查询出问题数据,用户能在提供的数据整理功能界面上,对数据进行整理达到清洗的效果。
对于某些可批量修改或者整理的数据,可以通过编写后台函数统一处理减少数据清理的工作量。
3 、新旧系统数据的差异分析。
分析新旧系统数据差异是数据迁移中非常重要的一个环节,首先必须拥有新旧系统详细的数据字典文档,在此基础上对新旧系统数据库结构进行分析研究,以新系统运行所需数据为依据,对旧系统现有数据进行对照分析,建立新旧系统数据字典字段映射规则。
4 、数据的检查。
数据的检查可以分为6 类,分别是对数据格式检查、数据长度检查、区间范围检查、空值与默认值检查、完整性检查和一致性检查。
5 、数据转换与迁移程序的开辟和部署。
数据迁移工作通常需要编写大量先后台程序才能得以顺利完成。
采用的方法都是通过执行各个后台函数或者函数脚本实现,这就需要在准备阶段就逐步编写这些代码,并不断进行测试。
数据迁移工具由专门的数据迁移项目组统一牵头,针对涉及数据项中需要进行迁移工具的开辟,负责编写数据迁移工具功能说明书模板,并跟进开辟,进行测试后,发给实施人员进行测试和使用。
对于辅助模板内容、本地定制化增强字段所涉及的程序,开辟完成后进行多次测试演练。
首先将旧系统涉及到的迁移数据,在新系统中建立相应的数据库表结构,并将旧数据导入相应的表中,然后在新系统中编写后台程序,将历史数据迁移到新系统中。
本次我们的迁移是建立一个和正式系统一模一样的数据迁移数据库,将旧系统的迁移数据imp 到此迁移数据库中,所有的编码和调试也都在此环境中进行,这样就可以将导入到新系统的数据可能产生的问题,如:字典表数据的转化、外键约束等等,在迁移数据库中全部处理掉,这样得到的数据便可顺利的导入新系统。
数据转换主要分直接转换、程序转换、代码对照、类型转换、常量转换、不转换等6
种方式。
1 、直接转换。
直接转换方式是最常用的方式,就是将原表中对应字段的数据原封不动的搬到新表中来。
按照“数据照搬”原则,我们应该尽量采用这种方法。
2 、程序转换。
对那些需要进行计算才干进行转换的数据将采用程序转换方式进行。
3 、代码对照。
某些代码字段,往往新旧系统的编码不相同,这时就需要参照代码对照表进行代码对照转换。
4 、类型转换。
少数数据可能需要对类型进行转换,如就表以字符串‘YYYY-MM-DD’来存放日期,而新表中以DATE 型来存放日期,这时就需要进行类型转换。
5 、常量转换。
新表中某些字段可能存在缺省值,这时将采用常量转换方式,当旧表没有对应字段或者旧表对应字段数据为空时,将直接在新表中写入缺省数据。
6 、不转换。
对于旧表有但新表中没有的字段将不作任何转换。
数据迁移涉及的数据量很大,通过人工处理很难完成的,因此必须编写相关的工具完成数据整理及转换工作。
通过编写后台程序,对数据进行迁移,实现抽取、转换、装载三个步骤。
数据抽取、转换是根据新旧系统数据库的映射关系进行的,而数据差异分析是建立映射关系的前提,这其中还包括对代码数据的差异分析。
转换步骤普通还要包含数据清洗的过程,数据清洗主要是针对源数据库中,对浮现重复、不完整、违反业务或者逻辑规则等问题的数据进行相应的清洗操作,在清洗之前需要进行数据质量分析,以找出存在问题的数据,否则数据清洗将无从谈起。
数据装载是通过装载工具或者自行编写的SQL 程序将抽取、转换后的结果数据加载到目标数据库中。
经调研,新旧数据库某些表格和字段差异较大,在数据库迁移之前进行表结构变化规则制定:
表M 字段a 字段b 字段c
表N 字段a1 字段b1
如上面表格所示,一一对应的字段写上各方的字段名,如果一方缺失,用空格代替。
对于新系统与旧系统的数据项长度不一致的,为了防止数据丢失,应以数据项较长的为准。
对于新系统与旧系统的同一数据项,而代码标准不一致的,需要建立代码对照表交由用户审定后再进行升迁。
旧系统为代码输入项目,新系统为手工录入项目的,数据升迁时直接将含义升迁至新系统中。
旧系统为手工录入项目,新系统为代码输入项目的,数据升迁时应将数据导入暂时表中,由用户确认这些数据的新代码后再导入正式库。
新系统中新增的数据项目,如果为关键非空项,在数据升迁时需要由用户指定默认值或者者数据生成算法。
旧系统有而新系统已取销的数据项目,原则上升迁至该记录的备注字段。
对于没有备注项目的,需要与用户商议是否需要继续保留。
这种数据交换模式为大量、批量、一次性执行的工作。
此项工作要求需要支持异常终断后继续,并且在完成数据升迁后,需要出具数据升迁报告交由用户审核确认。
如果数据升迁工作顺利完成,原有一期系统数据在备份并刻录光盘后,将再也不保留。
为确保迁移先后数据安全、完整、一致,满足迁移后业务流程联贯性要求,在充分分析新旧系统数据的差异后,通过自动化工具,并辅以人工校核的方式,完成系统数据转移。
数据校验的主要内容叙述如下:
检查数据的格式是否一致可用,如旧系统是varchar2,新系统数据要求为int 型,检查转换之后是否一致,是否满足新系统的需求。
字段e
字段d
检查数据的关联完整性,如引用的代码值是否存在,如果不存在是不是需要转换,特殊需要注意在系统中的主外键关系,是否关联正确。
检查逻辑上是否存在违反一致性的数据,如主表数据项与明细表数据项之和是否相等。
命名规范是否符合新的命名标准
检查新旧系统定义的空值、默认值的含义是否相同,不同的系统对空值的定义可能不同,需要特殊关注。
检查数据的有效长度,如对于char 类型的字段转换到varchar2 类型的,需要特殊关注,如果不进行处理可能导致新系统不能正常运行。
检查数据是否包含在定义区间的边界值中,如录入日期是2000 年的,这样的数据需要进行转换处理。
在进行数据迁移时,可以选择的数据迁移工具有不少,这些数据迁移工具都是软件厂商为BI (商务智能)的ETL 工作提供的,这些BI 的ETL 工具也可以作为数据迁移的工具,这些工具提供了数据抽取、转换的能力,支持可视化拖拽开辟,记录ETL 日志等强大的功能,下面将几种常用的ETL 工具做简单的介绍:
PLSQL 脚本
DataStage
PowerCenter
Kettle
datax
Oracle 公司
IBM
Informatica
开源组织
开源组织
1 、PLSQL 脚本:PL/SQL(Procedural Language/SQL)是一种过程化语言,属于第三代语言,它与C 、C++ 、Java 等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。
它允许SQL 的数据控制语言和查询语句包含在块结构(block_structured) 和代码过程语言中,使PL/SQL 成为一个功能强大的事务处理语言。
因为PL/SQL 允许混合SQL 声明和过程结构,因此可以在将声明发送到Oracle 系统去执行之前使用PL/SQL 区段和副程序来组合SQL 声明,没有PL/SQL,Oracle 需要就每次处理SQL 声明,在网络环境中,这将影响交通流量,而且增加响应时间。
PL/SQL 区段只被编译一次并且以可运行的形式储存,以降低响应时间。
2 、DataStage:由IBM 公司开辟的,是一套专门对多种操作数据源的数据抽取、转换和
维护过程进行简化和自动化,并将其输入数据集市或者数据仓库目标数据库的集成工具。
DataStage 可以从多个不同的业务系统中,从多个平台的数据源中抽取数据,完成转换和清洗,装载到各种系统里面。
其中每步都可以在图形化工具里完成,同样可以灵便地被外部系统调度,提供专门的设计工具来设计转换规则和清洗规则等,实现了增量抽取、任务调度等多种复杂而实用的功能。
其中简单的数据转换可以通过在界面上拖拉操作和调用一些DataStage 预定义转换函数来实现,复杂转换可以通过编写脚本或者结合其他语言的扩展来
实现,并且DataStage 提供调试环境,可以极大提高开辟和调试抽取、转换程序的效率。
3 、PowerCenter:用于访问和集成几乎任何业务系统、任何格式的数据,它可以按任意速度在企业内交付数据,具有高性能、高可扩展性、高可用性的特点。
同时,它还提供了多个可选的组件,以扩展Informatica PowerCenter 的核心数据集成功能,这些组件包括:数据清洗和匹配、数据屏蔽、数据验证、Teradata 双负载、企业网格、元数据交换、下推优化(Pushdown Optimization)、团队开辟和非结构化数据等。
4 、Kettle: 是一款国外开源的ETL 工具,纯Java 编写(Java 开辟很好的集成),可以在windows、Linux、Unix 上运行,数据抽取高效稳定。
Kettle 中文名俗称“水壶”,开辟目的是将各种数据放到一个水壶中,然后经过各种处理加工,以特定的格式流出。
5 、Datax:是开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle 等) 、HDFS、Hive 、ODPS 、HBase、FTP 等
6、各种异构数据源之间稳定高效的数据同步功能。
它的优点是迁移效率高,经过服务器和网络以及配置优化,每一个节点甚至能达到3 万条/秒的传输速度。
编写迁移脚本也方便。
1、通过对五大ETL 工具的对照,结合本项目数据迁移实际场景。
选用公司自研版kettle
产品以及datax 产品。
2、对于数据量小,但是需要进行多表关联的数据,选用公司自研版kettle 迁移。
3、对于数据量特殊大,并且不需要与其他表关联的数据,选用datax 迁移。
对数据迁移的任务进行细化,整理出数据迁移的场景,对大数据量的数据制定数据分割的策略,在细化数据迁移任务的时候可以暂时不考虑任务执行的细节,只是考虑这些场景是必须的,且互相之间没有重复,减少重复工作。
新旧系统公共代码不可避免的存在一定的差异,在数据迁移的过程中需要建立存在差异的公共代码对照表,用以数据迁移过程中公共代码的转换。
由于新旧系统在设计上存在很大差异,存在的种种差异,将会导致旧系统某些历史数据不需要迁移或者需要经过转换后才干迁移。
通过新旧系统差异的比对,确定哪些数据是需要导入的,哪些数据需要先录入,哪些数据需要后面补录。
在新旧系统映射过程中,我们需要首先分析旧系统的数据质量,数据质量的分析主要侧重于以下几点:
1、“脏”数据检查,如有些在旧系统中存在的数据,新系统中不存在,这些数据我们将它划分为“垃圾”数据。
2 、不完整性检查,哪些数据项是新系统中必填而在旧系统中是不存在的。
3、不一致性检查,是否存在新旧系统公共代码不一致的情况,如果存在,需要加入到公共代码对照表中。
4 、不标准性检查,哪些数据的格式与新系统要求的数据格式和命名规范是不一样的。
5、在分析完旧系统数据质量之后,需要将新旧系统映射转换的规则记录下来,记录使用附录中“ETL 文档模块.xls”记录,新旧系统数据关系映射表是制定数据流转和开辟数据迁移程序的依据,也是数据迁移后进行数据校验和测试的依据,此步骤在数据迁移流程中至关重要。
数据迁移程序的开辟是数据迁移中的主要过程,在这个过程中进行数据迁移中的各种活 动决定了数据迁移程序是否茁壮, 数据迁移是否能够最终完成。
在这个过程中除了写数据迁 移的脚步和开辟迁移程序之外,还要做许多数据迁移的相关工作。
如数据迁移程序的设计、 编写数据迁移程序和脚本的调试、 生成数据迁移缺陷报告。
数据迁移程序的编写主要有以下 几个步骤:
1、建立数据 ETL 函数或者程序在数据迁移过程中为减少开辟的工作量, 对于一些公共 的 ETL 函数进行抽象,提前对这些转换函数进行整理,以便在数据迁移程序的开辟过程中 可以直接调用。
2、建立抽取、过滤、转换、装载日志程序在数据迁移过程中一定要对迁移的日志信息 记录,以方便数据迁移的验证,数据迁移失败进行回退操作。
3 、建立数据迁移程序按业务实体或者业务功能组装数据迁移的代码、 ETL 函数和记录抽 取日志,完成数据迁移程序的编码工作。
4、生成数据迁移缺陷报告
对于不能导入的数据或者无需导入的数据进行记录,以便以后数据核对时有据可查。
数据迁移验证时对所迁移数据是否正确的验证,
DMIS 数据量大,业务复杂,所以数据 迁移后数据的验证也是非常复杂的一个过程, 需要开辟必须要的验证工具和测试脚本, 以减 轻数据验证的工作量和人工验证的误差。
数据验证不仅在数据迁移实施完成之后, 在开辟调 试数据迁移程序的过程中就需要对数据进行验证,根据数据校验策略要求的内容编写数据迁 移验证程序。
在测试环境执行数据迁移程序或者脚本,然后用数据迁移程序验证迁移结果的正确性, 在数据迁移程序的正确无误之后,然后在测试环境迁移一次数据,记录数据迁移的总时间, 通过此时间来确定数据迁移过程中需要停机的时间,尽量减少因系统停机带来的风险。
在数据迁移执行前, 根据数据迁移论证中确定的停机时间暂停老系统的运行, 在老系统 暂停之后执行数据迁移程序。
数据迁移按照招投标主数据、电商数据、其他数据的顺序进行迁移。
以系统业务功能作为数据迁移的最小单位,并行开展数据迁移、验证等工作。
1、用硬盘拷贝老系统1 个月之前的全库数据。
2、在申请的虚拟机上搭建一套oracle 数据库。
3、搭建两套数据迁移工具
4、根据需求分析中梳理出的表结构差异编制迁移脚本,配置etl 流程。
5 、根据执行计划执行数据迁移。
6 、记录和解决迁移报错。
7 、持续进行业务性能和业务逻辑测试等。
8 、优化迁移脚本。
9 、等待老系统业务全部切换到新系统。
10 、重新全量拷贝老系统所有数据库数据。
11 、重新执行迁移脚本。
12 、最终测试。
1 、迁移的数据风险主要包括数据遗漏、数据不完整、数据不一致、数据泄密等等。
2、针对数据遗漏,我们将会根据迁移日志和数据库比对,子细验证数据迁移范围;针对数据不完整和不一致,我们主要通过严格分析数据迁移规则,对迁移先后数据进行预览,测试等;针对数据泄密,数据库直连迁移方式不存在该类风险,而对于通过中间文件的迁移,中间文件将进行加密操作,从而保障传输的过程安全可靠。
1 、数据迁移可靠性风险主要包括业务连续、出错恢复等。
2、数据迁移的业务连续风险主要指如缺陷处理流程等业务流程信息的连续性。
一方面,我们通过技术手段保障数据的一致完整;另一方面,建议从业务上规定当前未处理完成的流程数据的迁移规则。
3、数据迁移的出错恢复,主要通过分析数据迁移日志,对迁移错误数据进行恢复重导或者直接纠正等。
此次迁移需要做好以下风险控制:
1 、字符集:字符集转化:Oracle 字符集AL32UTF8,ZHS16GBK,转换成MySQL 支持的字符集Latin1,utf8 ,utf8mb4 。
Mysql 对于字符集里有两个概念:一个是"Character set" 另一个是"Collations" 。
Collations:Mysql 对字符的比较,排序规则。
Character set:字符的编码方式。
2、字段类型:Oracle Row,Clob ,BINARY_DOUBLE 类型转化成MySQL 支持的字段类型。
如:Oracle 的CLOB 类型对应MySQL 的LONGTEXT 类型。
3 、主键:有些源表没有设置主键,但对于MySQL 来说主键的意义非常大。
4 、分区表:为了性能考虑,Mysql 需要根据数据量的大小和业务场景,做好表的分区设置。
1 、编写测试脚本校验迁移之后数据的完整性、一致性和准确性。
2 、人工核对数据以及系统前台的业务逻辑和关键业务的系统性能。
3、利用自动化测试工具测试系统的性能和BUG 。
1 、在最终正式迁移时,应提前跟客户商议好时间,最好选择在周末进行。
2 、提前发布系统升级公告,暂停系统使用一天。
3、系统关闭后进行数据库全库备份
4 、进行数据库从全库备份中还原的演练。
5 、一旦发生意外,保证充足人力快速解决问题,超出解决时长就记录问题暂停迁移,进行数据库全库还原。
根据设计的数据迁移方案,建立一个摹拟的数据迁移环境,它既能仿真实际环境又不影响实际数据,然后在数据摹拟迁移环境中测试数据迁移的效果。
数据摹拟迁移前也应按备份策略备份摹拟数据,以便数据迁移后能按恢复策略进行恢复测试。
根据设计的数据迁移测试方案测试数据摹拟迁移,也就是检查数据摹拟迁移后数据和应用软件是否正常。
主要包括:
1 、数据一致性测试;
2、应用软件执行功能测试;
3 、应用软件性能测试;
4 、数据备份和恢复测试等。
数据摹拟迁移测试成功后,在正式实施数据迁移前还需要做好以下几个方面工作:
1 、进行彻底数据备份;
2、确定数据迁移方案;
3 、安装和配置软硬件等。
将实际应用系统的应用软件移植到数据迁移后的数据库系统上,并使之正常运行。
1、在新系统开辟上线后,存在一个新老系统并行运行、逐步切换的过程,需根据系统开辟情况提出有序、妥帖的方案,保障老系统正常运行,新老系统平滑切换,全市政府采购业务照常开展。
2、新老系统并行运行期间,保障老系统安全、稳定运行,产生的数据按照国家数据标准规范自动转换。
老系统在并行阶段产生的数据,也须全部迁移至新系统。
3、新老系统并行运行期间,制定新系统试点运行方案,并做好新系统用户培训,保障试运行期间新系统安全、稳定运行,并做好系统功能完善。
4、新老系统并行运行期间,实现对各地原有系统和新系统数据进行归集、整理、标准化。
5、系统的迁移和运行,按照“稳定一个,切换一个”的原则进行推广。
在实施数据正式迁移后,且各项参数指标均正常的情况下,选取试点单位或者地市,进行所切换项目的试运行工作,待稳定运行一段时间后,逐步将全市范围内所有项目正式切换至新系统并投入
实际使用。
在正式实施数据迁移成功并且数据库参数和性能达到要求后,就可以正式运行应用系统,并投入实际使用。
XXXXXXXXXXXXXXXXXX。