记一次迁移海量数据有感
最近公司因业务需要好几个迁移数据的任务落到我手里头,被几经摧残之后感觉还是把记录下来以备回忆~
背景:源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监控 - 最后最重要的,多脚本有序运行记录下操作步骤,省脑子🧠

浙公网安备 33010602011771号