mysql数据迁移mongodb_从mysql迁移数据至mongoDB

简述

最近做的积分系统二期要上线了,在第一期的时候仅考虑到了mysql分表,未引入mongoDB,因而在在第二期的时候引入Mongo,除了程序中要多写(同时写mysql,Mongodb)之外,还需要考虑到历史数据的迁移(拷贝)问题。

方案制定

经查发现:线上mysql数据问题接近200W,平均每日新增3~4W条。压力和数据量都不算大,所以决定直接用脚本进行迁移。

因为线上服务不会停,所以在迁移数据时,系统仍会不断有新增数据,那么如果处理这部分的新增数据也是一个问题。 针对这个问题解决办法比较多,但是主要思想都是数据分段。比如:

以时间维度分段,以某个时间为截点timeA,先迁移这部分数据,然后系统上后再导入timeA至上线时这部分的数据,这个办法有个弊端,时间精准性很难把握,你很难记录系统上线的时间timeB. 当然有个办法就是等系统上线之后,去mongoDB中查询第一条记录插入的时间,以此做为timeB的值,但是这个做法仍不是比较好的解决办法。如果QPS很低,迟迟没有记录插入,那么你只能等,如果QPS过高,则可能同一秒的时候有些数据仍没有写进mongoDB,只写入了mysql,以此时间为timeB的值,则可能会漏掉记录。

以唯一键分段比如id,比如导出数据时记录每个表导出记录的id值。然后采用跟上面的思路一样,进行2次分批导入,缺点仍然是麻烦。

所以针对这个问题,结合我们业务访问量以及数据量制定的方案就是:先重叠数据,再去重。即让线上的数据和迁移的数据产生一部分重叠,再根据唯一

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值