400k数据拉入mongodb

d7v8vwbk  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(321)

我正在开发一个 spring boot 从远程获取数据的api mysql 数据库表。此表每天包含300k-400k数据。我们需要将这些数据迁移到 mongoDB 现在。我试过了 GridFS 收集的存储技术 json 文件到 mongoDB . 我能在本地机器上找到这个。但是当我在live服务器上尝试这个场景时 JVM 抛出错误:

2018-12-18 17:59:26.206 ERROR 4780 --- [r.BlockPoller-1] o.a.tomcat.util.net.NioBlockingSelector  : 

java.lang.OutOfMemoryError: GC overhead limit exceeded
    at java.util.ArrayList.iterator(ArrayList.java:840) ~[na:1.8.0_181]
    at sun.nio.ch.WindowsSelectorImpl.updateSelectedKeys(WindowsSelectorImpl.java:496) ~[na:1.8.0_181]
    at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:172) ~[na:1.8.0_181]
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86) ~[na:1.8.0_181]
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97) ~[na:1.8.0_181]
    at org.apache.tomcat.util.net.NioBlockingSelector$BlockPoller.run(NioBlockingSelector.java:339) ~[tomcat-embed-core-8.5.14.jar:8.5.14]

2018-12-18 17:59:27.865 ERROR 4780 --- [nio-8083-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet]      : Servlet.service() for servlet [dispatcherServlet] in context with path [/datapuller/v1] threw exception [Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: GC overhead limit exceeded] with root cause

java.lang.OutOfMemoryError: GC overhead limit exceeded

我试着用 -Xmx3048m 通过打开 java 来自控制面板的实用程序。。但结果是一样的。我下一步应该怎么做来解决这个问题。我没有在这里张贴代码,因为我希望它是所有的罚款,因为它是运行在本地机器上的60k至70k记录数据正常。

yqkkidmi

yqkkidmi1#

最有效的方法总是绕过所有这些抽象。
因为您没有被锁定到sprint引导,所以我建议您将数据作为csv从mysql转储,或者通过mysqldump,或者

echo 'SELECT * FROM table' | mysql -h your_host -u user -p -B <db_schema>

然后您可以将这个csv导入mongodb。

mongoimport --host=127.0.0.1 -d database_name -c collection_name --type csv --file csv_location --headerline

https://docs.mongodb.com/manual/reference/program/mongoimport/

相关问题