在线无感知割接

ochentto 2021-04-20 11:06:24
针对现网大集团、大合帐、亲情付、历史数据等全业务迁移等业务场景通过一次性数据迁移方式来完成全网数据迁移。
由于一次性迁移数据量一般很大,建议在晚上进行数据迁移,同时要避开版本数据库脚本发布期间等。
一次性迁转把目前CB1.0物理库及内存库数据按地市及产品批量搬迁到CB2.0的数据库里。目前cb1.0里主要分为营业库,账管库及计费的内存数据。在CB2.0中对应的为客户中心,用户中心,账户中心,账务中心,计费中心,信控中心等。物理库由oracle变为drds,内存库由单机变为分布式。
借鉴省分数据上收的迁移经验,以大批量的数据操作的方式,最短时间内一次性把一批数据从cb1.0搬迁到到cb2.0系统上。
参照目前的在线流程,结合目前的省分数据上收流程,离线迁移大致梳理成以下流程:数据提取,数据清洗(多次),数据校验,加锁(打标),搬迁,稽核,入库,路由更新,解锁(激活)等,并对每个流程批量化处理进行分析开发验证。
数据提取:
 要求:不能拆分(群组和合账的)关联用户,要作为一个单元,整体进行搬迁。
 根据省分搬迁目标圈定全业务(集团、大合账、亲情付等)用户范围,提取出本次迁移用户数据(可分批迁移),后续迁移已此为目标基础用户。
 数据校验,生成校验结果表和问题用户明细记录表。
数据清洗:
数据清洗主要包含基础数据清洗和迁移数据的新老模型数据转换,该部分根据各业务中心提供的转换表(字段)规则进行数据级别的转换工作,转换完成之后再根据数据维度、业务维度进行二次清洗,以此保证转换后的数据表能直接落地到新架构。
数据清洗内部分成预清洗、最终清洗两个部分,切分点为用账户加锁,加锁前为预清洗,加锁后为最终清洗,预清洗主要是暴露问题,最终清洗为最终数据。
清洗方案:
预清洗:考虑到对生产环境的负载影响,可以分成基于镜像库的数据清洗和生产库的数据清洗,镜像
库的清洗主要是发现大批量的数据类和业务类限制等,尽量减少生产环境的数据清洗工作,
考虑到时差等因素,生产的预清洗可考虑增量方式进行。
最终清洗:
新老模型转换:
1、 基础表倒换
针对新老架构表模型基本一致的表,倒换只需要字段对接即可。
2、 横纵表倒换
横表转换成纵表,纵表转换成横表,这类表的转换,要做特殊性处理。
3、 合成表倒换
多张表合成一张表,要兼顾转换效率
4、 特殊表倒换
数据校验:
 数据校验主要是针对数据常规化校验(主键、唯一索引等)、业务维度进行校验,业务维度参考在线迁移目前提供的一些业务类限制校验,比如在途工单、跨省限制等。
 数据校验结果,生成校验结果表和问题用户明细记录表。一个用户对所有校验规则都要跑一遍,尽量避免出现处理了一种问题在跑的时候又报出其他问题;并且存储的结果要有关系信息,如user_id、serial_number、如果是在途订单要有订单号等关键信息等。
 详见校验脚本
校验范围:
1. 业务类:在途单;
2. 数据类:和新架构生产的主键冲突和唯一索引;
数据加锁:
为保障迁移过程中数据静止,需要对用户、账户状态进行加锁处理。用户中心、账户中心、计费中心提供对应的加锁规则,迁移工具按此方法完成加锁动作。
中间表倒换&数据搬迁:
经过数据清洗步骤之后形成的倒换表与cBSS2.0数据模型一致,因此一次性迁移通过专用的数据倒换工具一次性规模化导入到新架构,考虑到新架构运营能力较繁琐,因此新架构表的校验、规则都前移到数据清洗步骤来完成,中间表数据实际就是待迁移的真实数据,后续可以直接按表搬迁即可。
 ORACLE按表迁移到DRDS上。通过datax工具实现搬迁,经过对datax进一步封装,使用具有动态生成配置的功能。示例如下:
Mydatax.sh tablename oracle_tns drds_tns
 DRDS在写脚本写入生产资料表:数据通过搬迁到生产上的临时表中后,通过数据代理层直接把数据插入到生产表中。在生生产实例前需再次稽核数据是否已在生产上存在。
 此模块有以下脚本产出:
导换脚本
drds生产上稽核脚本
datax启停脚本



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

241

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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