记一次迁移海量数据有感
最近公司因业务需要好几个迁移数据的任务落到我手里头,被几经摧残之后感觉还是把记录下来以备回忆~
背景:源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
监控 - 最后最重要的,多脚本有序运行记录下操作步骤,省脑子🧠
本文作者:蜗牛使劲冲
本文链接:https://www.cnblogs.com/warrenwt/p/18074545
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步