项目作者: HuLing1025

项目描述 :
亿级设备信息迁移项目,sqlserver->mongodb
高级语言: Java
项目地址: git://github.com/HuLing1025/datamigration2.git
创建时间: 2021-06-23T09:44:38Z
项目社区:https://github.com/HuLing1025/datamigration2

开源协议:Apache License 2.0

下载


datamigration:

千万级(线上1.23亿)sqlserver数据转储mongodb,根据ID范围确定线程数以及单个线程处理的页数;
耗时:7.5kw数据耗时19分半

操作接口:

  • GET - localhost:8080/maxid 查看ID最大值
  • GET - localhost:8080/migration 开始转储数据
  • GET - localhost:8080/dropcollection 删除mongodb集合
  • GET - localhost:8080/exceptiondata?begin=&end= 手动处理异常数据(参数传begin 和 end, 类型 long)
  • (弃用)GET - localhost:8080/testdd 测试钉钉消息机器人

注意事项:

  • 瓶颈主要来源于sql查询和mongodb的写入过程(坑:sqlserver不支持分页查询);
  • 优化查询可以把[ SELECT * ] 改成查询相应字段,减少存储空间;
  • 其次是运行该程序的主机CPU和内存性能;
  • 若CPU和内存的性能不是很好,可以选择在main/job.java中增加单个线程处理页数(减少线程数)和减少一页查询的记录数(防止爆内存);
  • 线上环境(-prod),测试环境(-test),开发环境(-dev),在application.yml中设置编译环境;
  • 如果你是连接的远程服务器,还需要考虑网络的上下行速度;
  • 使用try-catch来对数据库操作做一个异常捕获,看是否有线程出现查询失败或者连接失效(或连接关闭)等情况;
  • 新增异常处理,有的时候连接出现问题或一些超时操作导致的异常,需要单开线程来查询处理;
  • 最好的方案是将程序放到mongodb同一台服务器上,写入数据太耗时了;
  • 使用定时任务,在用户对数据库操作少的时候进行迁移,避免加班;
  • 通过钉钉群机器人发送错误日志,实时关注运行情况;

警告

  • 若在代码中出现公有(公司所有)或者个人的服务器地址配置,请勿恶意连接或者破坏数据,否则将追究其法律责任!