mongo数据全量迁移mysql/tidb
后续若有更新不会更新博客,只会更新笔记,博客只做备份
https://www.wolai.com/mrll/gJa7WNrhaJAN7pKJRZCe4v?theme=light
背景
公司环境由于mongo被滥用,导致负载很大,要针对业务进行mongo至tidb的全量迁移,其中在mongo中手动的分表需合并为一张表,如a_1,a_2,a_3,a_4迁移至tidb后统一为a表
实现步骤
-
代码开启双写+id记录补偿
-
全量迁移
-
双读校验
双读和双写及代码补偿都是业务倾入的代码,就不做介绍
这里只介绍如何进行mongo导入到mysql(tidb)
迁移时序图
通过MongoExportUtil进行mysql建表,建索引,获取导出语句
mongo导出的表需要进行特殊处理
1.object处理
ObjectId(609eac900669900001848fc2)
→609eac900669900001848fc2
2.document处理
{"total":{"$numberLong":"12"},"award":{"$numberLong":"12"},"recycle":{"$numberLong":"0"}}
->
{"total":"12","award":"12","recycle":"0"}
通过tidb-lightning进行导入