--------------------------------------------------------------Beginning--------------------------------------------------------------
一、问题引入
在之前的博客中利用阿里开源软件(DataX)实现了数据库数据的迁移:SQL Server --> MongoDB
,并且成功将 2千万条
记录迁移至 MongoDB
。当时顺便还记录了迁移速度,迁移方式:分批次迁移(1百万条/次
), DataX统计显示迁移速度: 7000+条/s
。执行 10次
迁移任务,耗费时间约 48分钟
。
通过上一次的迁移经验,这次反过来迁移数据库数据:MongoDB --> SQL Server
,时间和效率理论上是可控的。 但是,问题来了。在执行一批次迁移 9千万+条
记录时,DataX统计显示迁移速度:200+条/s
。
按照这样的迁移速度,需要耗费时间约:5.2天
。迁移持续时间过长,一旦网络中断,一切归零,从来再来,只能另寻他法。
DataX统计记录中,观察到缺陷所在:MonggoDB 读数据时间很长,但SQL Server 写数据时间很短,问题出在MongoDB上。
经过一番查询,SQL Server支持 json
格式导入,而MongoDB 本身就是以 类json
格式存储的。
所以解决方法:MongoDB --> json文件 --> SQL Server
二、解决过程
按照解决方法分两步走:
第一步:MongoDB to json file
第二步:json file to SQL Server
2-1 MongoDB to json file
MongoDB官网上有工具(mongoexport.exe)可以将数据导出json格式文件。(耗费时间约20min)
mongoexport.exe的使用方法请参考官网mongoexport介绍,此处不做说明。