记一次迁移海量数据有感

最近公司因业务需要好几个迁移数据的任务落到我手里头,被几经摧残之后感觉还是把记录下来以备回忆~

背景:源sqlserver数据库设计的比较随便,数据比较混乱,百万级的量

  • 针对表迁移,表一一对应时需多创建个字段记录老表多主键id
  • 传入chunk-num参数,设置边界值,从而可以跑多进程
  • 查询尽量少连表,多map
  • 初次插入时采取批量插入,都放到一个大数组里面,最后提交事务
  • 写个while循环跑,sql大于id,id取每次循环出来的最大值,如果查不到了就跳出
  • 一次循环后就要unset掉刚刚的数据,不然会导致内存溢出
  • 增加个migrate_cycle表,记录每次跑脚本的参数
  • 去重如果觉得每次查sql慢可采用redis的setnx
  • 使用nohup php artisan sync:questionBookData 0 > /data/log/b0.log 2>&1 &多脚本同时运行时tail -f /data/log/*.log监控
  • 最后最重要的,多脚本有序运行记录下操作步骤,省脑子🧠
posted @ 2021-03-11 19:03  蜗牛使劲冲  阅读(14)  评论(0)    收藏  举报  来源