企业从传统数据库迁移到国产或开源数据库的最佳实践.docx

上传人:lao****ou 文档编号:224623 上传时间:2023-06-09 格式:DOCX 页数:9 大小:48.04KB
下载 相关 举报
企业从传统数据库迁移到国产或开源数据库的最佳实践.docx_第1页
第1页 / 共9页
企业从传统数据库迁移到国产或开源数据库的最佳实践.docx_第2页
第2页 / 共9页
企业从传统数据库迁移到国产或开源数据库的最佳实践.docx_第3页
第3页 / 共9页
企业从传统数据库迁移到国产或开源数据库的最佳实践.docx_第4页
第4页 / 共9页
企业从传统数据库迁移到国产或开源数据库的最佳实践.docx_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《企业从传统数据库迁移到国产或开源数据库的最佳实践.docx》由会员分享,可在线阅读,更多相关《企业从传统数据库迁移到国产或开源数据库的最佳实践.docx(9页珍藏版)》请在第一文库网上搜索。

1、企业从传统数据库迁移到国产或开源数据库的最佳实践随着近些年来数据库的变化,正有越来越多的企业面临将传统数据库迁移到开源或新型商业产品上。在这一过程中,会面临诸多问题。这里就将常见的一些问题整理出来,希望能够在数据库选型及评估数据库迁移风险等方面有所帮助。为了描述清晰,我将整个迁移过程划分为几个阶段,其中橙色标识工作为数据库团队来支持。下面将就每个阶段,详细展开说明。1) .迁移规划在进行迁移之初,首先要对迁移工作做个整体规划,制定好对应的原则方针。例如明确迁移范围、迁移方式、是否可停机、窗口期等等。这些信息是作为后续迁移的指导性原则,迁移方案的制定很多需依靠这一规划。要避免出现快要迁移,发现预

2、期不符合要求的情况,在提前做好必要的规划。此外,除技术因素外,其他如组织、管理、资源等,也在这一阶段一并考虑。迁移是个很复杂的过程,涉及的方方面面很多,尽量在项目之初就有个全面的掌握。2) .业务梳理要完成数据库迁移,上层的业务系统也是需要考虑的,甚至在某种程度讲,配套的应用迁移更加重要,在后续的迁移过程中占比也更高、难度也更大。因此,在迁移准备阶段,就对涉及的业务有个全面的梳理非常有必要。这里需要梳理的信息,非常宽泛。包括但不限于对业务系统涉及的软硬件环境、与数据库交互、业务系统间调用关系等。后续在做应用系统改造规划中,上述信息非常重要,其有助于评估工作难点、工作量等。这里举个例子,某系统之

3、前使用Orac1e,开发采用C语言,在迁移到某国产库时发现,数据库不支持Cdriver,好不尴尬。3) .方案选型在做好业务梳理后,就是数据库选型。这一过程也是迁移准备阶段比较耗时的一个工作。如何从众多的数据库产品中选择一款符合自己要求的,要考虑的因素很多。比较推荐的做法,是在公司内部之前就制定出推荐的方案矩阵,根据对数据库能力要求、系统重要程度等,制定一个产品选型矩阵。如果前期有这个基础,就比较简单,只要按图索骥即可。如果没有的话,需要从头完成一系列的工作,包括初始调研、技术评估、数据库评测(功能、非功能、业务等)、适配性评估等。这里强调一个原则就是尽量在方案选型中保持最大的自由度,即不绑定

4、单一厂商,随时保持可替换能力。因此在方案选型中,不能本着业务少改造、迁移最简单、成本最低的方案,而是应选择长期可替代的原则。推荐的做法是选择兼容通用协议的产品,尽量弱化数据库端能力,选择使用标准数据库功能的产品最好。4),技术培训在方案选择完毕后,需进行技术培训。这里说的培训,包含对研发、运维等多方面。对研发人员的培训,着重阐述此数据库在架构设计、结构优化、SQ1语句等方面与原有数据库的差异。如选择通用性产品,则此处的工作较少,也就是方便进行其他库间的迁移。这里面有个原则就是不迁就研发,该做的必要修改还是要修改。例如,在很多去。工作中,为了尽量减少迁移工作,很多项目选择兼容Orae1e语法、甚

5、至存储过程的产品。此类产品确实减少了迁移工作量,但从长远角度来看并不是一个很好的选择。对运维的培训,则侧重如何将这种新的数据库融入到现有的运维体系中。特别是当前很多分布式架构数据库,与传统集中式数据库不同,其对于运维带来的挑战也更大。2.阶段:迁移评估1),资源评估做好准备工作后,开始启动之前,根据之前梳理的业务情况、所做的数据库选型等信息,开始做必要的评估工作。这里的评估主要是为了后续迁移改造做好准备。首当其冲的就是资源评估,即完成上述迁移所需资源。这里有个隐藏的工作,就是相关的技术方案需要制定出来,包括数据库及应用端的。毕竟数据库能力不是一对一对等的,因此架构上会有很多调整甚至是重构。但这

6、里所做的评估,相对还是比较粗的,因为很难对资源消耗有个细粒度的描述,做后者的前提是有完整的评测数据为基础。为什么在这个阶段就要做此工作呢?主要是因为很多传统企业是采用预算制,需要提前很长周期做好后续的采购规划。因此将资源评估工作做了前置。2),应用评估在这个阶段要完成在数据库选型确定后,应用的评估工作。包括应用方案的调整(甚至重构)、应用的代码修改量、可能潜在的风险等等。这里主要是由应用架构师来完成上述评估。3),对象评估完成应用评估后,下面就是数据库评估的。其评估的第一项就是对象评估,即对数据结构的评估。数据库的能力层次不齐,原有的数据结构大概率都无法直接复用了,需要进行必要的调整甚至重新设

7、计。这里有个建议,就是尽量减少数据库端复杂对象的使用,尽量只考虑表及索引的设计,其余包括视图、序列、触发器、存储过程、函数、包等都通过外部的等价设计来完成。这点主要是出于减少对数据库的依赖所提出的,毕竟后面这个功能的实现差距非常大。当然,随之带来的外部等价实现的工作量也需要进行评估。此外,如果是分布式数据库方案,还需要考虑例如分片策略等。这里有个常见的通病,就是将原有设计原封不动地在新环境中落地,然后修改语法不兼容的部分就算是完成这一过程。其带来的后果,往往是上线后问题频出。4).SQ1评估对象评估之后,开始对SQ1语句的评估。较之前的经验,这部分也是较难评估的。比较推荐的做法是抓取源端的全量

8、SQ1,根据掌握的目标库的适配能力,做此评估工作。例如之前在去O的工作中,就从下面几个维度来评估SQ1,包括了SQ1复杂度(多表关联、文本过长等)、OraC1e方言语法、特有语法(函数、伪列等)等。这些评估出的SQ1,后续都将作为后续修改的依据。这里存在一个难点,就是两种数据库有相同SQ1,但处理效果是有差异的情况,这些可能导致非预期的行为,也最好筛选出来。上述可通过简单工具扫描SQ1文本完成,例如我之前分享的一个小工具。3 .阶段:迁移改造1) .对象改造对象改造,对数据对象进行改造。有些对象仅做简单的映射修改就可以了,有些则需要大的重构,甚至需要拆分、组合处理。很多对象(特别是复杂对象或重

9、计算类对象),建议从数据库端剥离,在上层等价实现。因此对象改造工作,不仅仅是DBA的工作,也有部分是需要应用研发参与的。针对上述修改工作,特别是一些关键业务表,是需要通过一定手段进行验证测试的。2) .SQ1改造SQ1改造,往往是在整个迁移过程中,最为浩大的工作。这主要是由于SQ1代码散落在应用各处,需要统一修改。如果使用了ORMaPPing工具还好,如果有硬code,改起来还是挺吃力的。目前有很多工具(包括开源的),通过指定源和目标库,输入SQ1语句协助完成改造工作。但这种方式,往往也仅仅起到辅助作用,转换后的结果还是需要人工的审核修改工作。要保证语义等价,也要保证执行效率等等。3),应用改

10、造配合迁移工作,应用也存在改造的工作量。例如有些在数据库端实现的逻辑,是需要改在应用端实现的;有些应用本身在新数据库架构下就需要进行适配性改造等等。4),功能测试在数据库改造(对象+SQ1)和应用改造均完成后,还需要一个关键步骤一功能测试。按业务功能拆分,针对每个独立功能,从应用侧角度进行测试验证,来保证上述改造的结果是正确的,性能是符合预期的。此处的功能测试,与后面的上线交割的功能测试不同,更强调是以小的应用单元为测试目标。这样便于随时修改,随时测试。4 .阶段:迁移数据1).迁移方案改造工作完成后,就进入了迁移数据环节。在迁移之初,最先确定的是迁移方案,这主要取决于对源目标端的数据库、物理

11、环境、迁移窗口、是否并行、是否回退等诸多因素。在大的方面可分为应用侧同步、数据库侧同步、存储侧同步三种方式,各有优势点吧。个人建议,如果能在应用侧处理,尽量在应用侧;其主要原因是与业务结合紧密、同步验证容易、方便并行回退等等。但这种方案的缺点在于,需要应用侧有大量修改工作,无法形成统一标准的方案。一般针对核心、重要的系统,建议采取应用侧同步的方式。针对数据库、存储端同步方案,一般都是较为通用的方案。下文重点讲述数据库同步的方式。2),结构迁移结构迁移,是将数据结构的迁移。一般这一过程是可以提前完成的。数据结构确定后,即可完成这一过程。不与后面数据同步放在一起,是为了便于出现问题时的排查分析。3

12、) .全量迁移如数据规模很大,可将整个过程划分为全量+增量迁移两部分。全量同步,一般是可离线、静态去做,通过备份恢复、导入导出等方式,将绝大部分数据迁移过去。这部分不放在停机窗口中,可提前进行。并在迁移之后,记录一个位点O4) .增量迁移增量迁移,从全量迁移记录位点开始。根据迁移技术本身,可采取停机或不停机的方式。一般都是通过追Iog的方式,逐步追齐数据,并短时静默应用,完成数据最终达到一致的状态。5) 阶段:上线交割1),SQ1审核在上线交割之前,还需要完成部分前置工作。SQ1审核,是为了保证SQ1上线前的运行质量。SQ1审核细分,可分为事前、事中、事后审核,这里更多指事前审核部分。即在开发

13、过程中,针对SQ1运行情况给予评估判断,来保证上线后的质量可控。一般是通过预定义一组规则,完成对语句的审核。这一过程贯穿在整个开发过程中。2),数据校验数据迁移后,在上线前还需要对数据同步后的质量有所判断,这就引入数据校验的初衷。严格来讲,这是数据质量保证的一部分。其作用是对同步两边的数据是否一致做出判断,来整体把握同步质量,也是为后面是否正式切换的判断依据之一。这里存在几个难点,一是海量数据如何快速比对,二是异构条件下数据如何比对,三是两侧数据同步变化时如何比对?目前已经有些产品能够支持较为完整的数据校验功能。个人也是比较建议,在数据迁移后进行对比。虽然这里有些成本,但要比运行一段时间后发现

14、差异而无法回退好的多。3) .功能测试在正式迁移前,针对迁移后的全量环境做完成的业务功能测试是非常必要的。需要对迁移后的结果有个全局的掌握。一方面可以验证整个迁移过程是否OK,另一方面也可为后续正式迁移提供基线判断标准。4) .性能测试在功能测试的同时,还需保证迁移后的性能满足预期设定,因此性能测试也必不可少。这里可以使用数据库侧进行性能测试,但更建议是从应用侧完成性能测试,因为后者是从用户视角,更具有说服力。6) 阶段:运行保障1) .数据库运维迁移完成,系统上线后就进入到运行保障阶段。从数据库来说,提供的基本能力之一就是基于新数据库架构下的运维能力。对于一个新的选型来说,需要将新品种数据库

15、纳入到整体的运维体系中,这其中涉及的工作不少。一般是需要提前规划完成的。2) .高可用保障除了日常运维外,高可用被独立出来,主要是这部分重要性很高。新的数据库选型,代表着运行风险更高,如何保证高可用值得关注。一般是建议提前规划好高可用方案(而不是上线后),并进行周全的高可用切换测试。甚至上线后,可应保证一定频率的切换演练,做到有备无患。3) .运行优化迁移后上线运行,运行效率值得关注。新的数据库选型,对稳定性运行会带来一定调整。作为运行保障的一部分,建立其完备的运行优化能力非常必要,包括基本的慢查询、日志、栓锁、会话等诊断工具及对应的处理措施。这一点对于国产库尤为重要,近些年来国产数据库发展迅速,但相较于其内核功能发展,上述周边管理优化能力发展不足,需要提前关注。4),应急响应作为最后的保障措施,当出现问题时的应急响应是需要提前规划的。这里更多是流程制度的设定,保证出现问题时及时感知、及时修复,不影响业务。-全文完-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服