MongoDB2.0.1 出现严重数据丢失问题

再插入1000W的数据,既然丢失100W多数据。太夸张了吧。
是我操作上的问题,还是其他原因。在网络中,也有一些人发生过数据严重丢失。
1、我的环境
系统 window 20003
内存 1G
硬盘 1T 5700转
2、打算采用自动分片架设海量存储数据。
JSON结构
id 建立索引
url 建立索引
插入1000W数据,花费5个小时左右。
测试结果
查询一条记录,在100毫秒左右。
但发现一个非常严重的问题。数据严重丢失。数据库中只有8 963 724条数据。其他数据呢?
不见了?
贴一下相关代码。
Java代码  收藏代码
  1. Mongo m = null;  
  2.           try  
  3.           {  
  4.             //连接数据库(三种连接方式):  
  5.             m = new Mongo("127.0.0.1", 25017);  
  6.             //选择数据库,如果没有这个数据库的话,会自动建立  
  7.            DB db = m.getDB("dnt_mongodb");  
  8.           //列出所有数据库名,不过发现,如果数据库里面是没有数据的话,并不会被列出来  
  9.            System.out.println("数据库列表:\n"+m.getDatabaseNames());  
  10.            DBCollection collection = db.getCollection("posts1");   
  11.            System.out.println("统计文档:" + collection.count());  
  12.            BasicDBObject document = new BasicDBObject();  
  13.            document.put("id", 1);  
  14.            collection.createIndex(document);  
  15.            document = new BasicDBObject();  
  16.            document.put("url", 1);  
  17.            collection.createIndex(document);  
  18.          for(int i = 1; i <= 10000000; i++){  
  19.            System.out.println(i);  
  20.          document = new BasicDBObject();  
  21.                document.put("id", i);  
  22.                document.put("url", "http://www.agrilink.cn/NewNongSou/GNZX/index2011.html?OK=" + i);  
  23.                //将新建立的document保存到collection中去  
  24.                collection.insert(document);  
  25.          }  
  26.            
  27.          System.out.println("Done");   
  28.            
  29.           }  
  30.           catch(Exception error)  
  31.          {  
  32.             error.printStackTrace();  
  33.          } finally {  
  34.              m.close();  
  35.          }  

数据库中数据结果
Java代码  收藏代码
  1. mongos> use dnt_mongodb  
  2. switched to db dnt_mongodb  
  3. mongos> db.posts1.stats()  
  4. {  
  5.         "sharded" : true,  
  6.         "flags" : 1,  
  7.         "ns" : "dnt_mongodb.posts1",  
  8.         "count" : 8963724,  
  9.         "numExtents" : 65,  
  10.         "size" : 932223312,  
  11.         "storageSize" : 1175728128,  
  12.         "totalIndexSize" : 1595456464,  
  13.         "indexSizes" : {  
  14.                 "_id_" : 290926608,  
  15.                 "id_1" : 250226480,  
  16.                 "url_1" : 1054303376  
  17.         },  
  18.         "avgObjSize" : 103.99955554187076,  
  19.         "nindexes" : 3,  
  20.         "nchunks" : 42,  
  21.         "shards" : {  
  22.                 "shard0000" : {  
  23.                         "ns" : "dnt_mongodb.posts1",  
  24.                         "count" : 1861097,  
  25.                         "size" : 193554088,  
  26.                         "avgObjSize" : 104,  
  27.                         "storageSize" : 272621568,  
  28.                         "numExtents" : 16,  
  29.                         "nindexes" : 3,  
  30.                         "lastExtentSize" : 51974144,  
  31.                         "paddingFactor" : 1,  
  32.                         "flags" : 1,  
  33.                         "totalIndexSize" : 398048560,  
  34.                         "indexSizes" : {  
  35.                                 "_id_" : 60396112,  
  36.                                 "id_1" : 51950304,  
  37.                                 "url_1" : 285702144  
  38.                         },  
  39.                         "ok" : 1  
  40.                 },  
  41.                 "shard0001" : {  
  42.                         "ns" : "dnt_mongodb.posts1",  
  43.                         "count" : 1857613,  
  44.                         "size" : 193191752,  
  45.                         "avgObjSize" : 104,  
  46.                         "storageSize" : 272621568,  
  47.                         "numExtents" : 16,  
  48.                         "nindexes" : 3,  
  49.                         "lastExtentSize" : 51974144,  
  50.                         "paddingFactor" : 1,  
  51.                         "flags" : 1,  
  52.                         "totalIndexSize" : 282807840,  
  53.                         "indexSizes" : {  
  54.                                 "_id_" : 60281648,  
  55.                                 "id_1" : 51852192,  
  56.                                 "url_1" : 170674000  
  57.                         },  
  58.                         "ok" : 1  
  59.                 },  
  60.                 "shard0002" : {  
  61.                         "ns" : "dnt_mongodb.posts1",  
  62.                         "count" : 1829738,  
  63.                         "size" : 190288768,  
  64.                         "avgObjSize" : 103.99782263908821,  
  65.                         "storageSize" : 220647424,  
  66.                         "numExtents" : 15,  
  67.                         "nindexes" : 3,  
  68.                         "lastExtentSize" : 43311104,  
  69.                         "paddingFactor" : 1,  
  70.                         "flags" : 1,  
  71.                         "totalIndexSize" : 402496304,  
  72.                         "indexSizes" : {  
  73.                                 "_id_" : 59423168,  
  74.                                 "id_1" : 51108176,  
  75.                                 "url_1" : 291964960  
  76.                         },  
  77.                         "ok" : 1  
  78.                 },  
  79.                 "shard0003" : {  
  80.                         "ns" : "dnt_mongodb.posts1",  
  81.                         "count" : 3415276,  
  82.                         "size" : 355188704,  
  83.                         "avgObjSize" : 104,  
  84.                         "storageSize" : 409837568,  
  85.                         "numExtents" : 18,  
  86.                         "nindexes" : 3,  
  87.                         "lastExtentSize" : 74846208,  
  88.                         "paddingFactor" : 1,  
  89.                         "flags" : 1,  
  90.                         "totalIndexSize" : 512103760,  
  91.                         "indexSizes" : {  
  92.                                 "_id_" : 110825680,  
  93.                                 "id_1" : 95315808,  
  94.                                 "url_1" : 305962272  
  95.                         },  
  96.                         "ok" : 1  
  97.                 }  
  98.         },  
  99.         "ok" : 1  
  100. }  
  101. mongos>  

具体的配置步骤
Java代码  收藏代码
  1. 创建configs服务器  
  2. mongod --dbpath "c:\mongodb\data\configs"  --port 23017  
  3. 创建mongos服务器 并指定依赖的配置服务器 (mongos依赖于配置服务器,mongos查询的分片信息都存储在configs中)  
  4. mongos  --port 25017  --configdb 127.0.0.1:23017  
  5. 创建多个分片服务器 (负责数据存储)  
  6. mongod  --port 27017 --dbpath  "c:\mongodb\data\dbs\shard27017"  
  7.   
  8. mongod  --port 27018 --dbpath  "d:\mongodb\data\dbs\shard27018"  
  9.   
  10. mongod  --port 27019 --dbpath  "f:\mongodb\data\dbs\shard27019"  
  11.   
  12. mongod  --port 27020 --dbpath  "e:\mongodb\data\dbs\shard27020"  
  13. 连接mongos服务器添加shard27017|shard27018|shard27019|shard27020分片服务器到configs服务器中。  
  14. mongo localhost:25017/admin  
  15.   
  16. db.runCommand( { addshard : "localhost:27017", allowLocal : 1} )  
  17.   
  18. db.runCommand( { addshard : "localhost:27018", allowLocal : 1} )  
  19.   
  20. db.runCommand( { addshard : "localhost:27019", allowLocal : 1} )  
  21.   
  22. db.runCommand( { addshard : "localhost:27020", allowLocal : 1} )  
  23.   
  24. 创建相应数据库并设置其"可以sharding",对dnt_mongodb库启用分片功能  
  25. db.runCommand({"enablesharding":"dnt_mongodb"})  
  26. 注意:需要分片的集合 的shard key必须是索引键, (我们也可以在mongos为分片foo集合创建索引)  
  27. db.runCommand( { shardcollection : "dnt_mongodb.posts1", key : {_id : 1}, unique: true } )     
  28. 至此自动分片就创建完成了,可以在mongos或configs服务器查询分片信息。  
  29. db.printShardingStatus() 
原文地址:https://www.cnblogs.com/shihao/p/2315611.html