`
lzj0470
  • 浏览: 1270837 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

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

数据库中数据结果
mongos> use dnt_mongodb
switched to db dnt_mongodb
mongos> db.posts1.stats()
{
        "sharded" : true,
        "flags" : 1,
        "ns" : "dnt_mongodb.posts1",
        "count" : 8963724,
        "numExtents" : 65,
        "size" : 932223312,
        "storageSize" : 1175728128,
        "totalIndexSize" : 1595456464,
        "indexSizes" : {
                "_id_" : 290926608,
                "id_1" : 250226480,
                "url_1" : 1054303376
        },
        "avgObjSize" : 103.99955554187076,
        "nindexes" : 3,
        "nchunks" : 42,
        "shards" : {
                "shard0000" : {
                        "ns" : "dnt_mongodb.posts1",
                        "count" : 1861097,
                        "size" : 193554088,
                        "avgObjSize" : 104,
                        "storageSize" : 272621568,
                        "numExtents" : 16,
                        "nindexes" : 3,
                        "lastExtentSize" : 51974144,
                        "paddingFactor" : 1,
                        "flags" : 1,
                        "totalIndexSize" : 398048560,
                        "indexSizes" : {
                                "_id_" : 60396112,
                                "id_1" : 51950304,
                                "url_1" : 285702144
                        },
                        "ok" : 1
                },
                "shard0001" : {
                        "ns" : "dnt_mongodb.posts1",
                        "count" : 1857613,
                        "size" : 193191752,
                        "avgObjSize" : 104,
                        "storageSize" : 272621568,
                        "numExtents" : 16,
                        "nindexes" : 3,
                        "lastExtentSize" : 51974144,
                        "paddingFactor" : 1,
                        "flags" : 1,
                        "totalIndexSize" : 282807840,
                        "indexSizes" : {
                                "_id_" : 60281648,
                                "id_1" : 51852192,
                                "url_1" : 170674000
                        },
                        "ok" : 1
                },
                "shard0002" : {
                        "ns" : "dnt_mongodb.posts1",
                        "count" : 1829738,
                        "size" : 190288768,
                        "avgObjSize" : 103.99782263908821,
                        "storageSize" : 220647424,
                        "numExtents" : 15,
                        "nindexes" : 3,
                        "lastExtentSize" : 43311104,
                        "paddingFactor" : 1,
                        "flags" : 1,
                        "totalIndexSize" : 402496304,
                        "indexSizes" : {
                                "_id_" : 59423168,
                                "id_1" : 51108176,
                                "url_1" : 291964960
                        },
                        "ok" : 1
                },
                "shard0003" : {
                        "ns" : "dnt_mongodb.posts1",
                        "count" : 3415276,
                        "size" : 355188704,
                        "avgObjSize" : 104,
                        "storageSize" : 409837568,
                        "numExtents" : 18,
                        "nindexes" : 3,
                        "lastExtentSize" : 74846208,
                        "paddingFactor" : 1,
                        "flags" : 1,
                        "totalIndexSize" : 512103760,
                        "indexSizes" : {
                                "_id_" : 110825680,
                                "id_1" : 95315808,
                                "url_1" : 305962272
                        },
                        "ok" : 1
                }
        },
        "ok" : 1
}
mongos>

具体的配置步骤
创建configs服务器
mongod --dbpath "c:\mongodb\data\configs"  --port 23017
创建mongos服务器 并指定依赖的配置服务器 (mongos依赖于配置服务器,mongos查询的分片信息都存储在configs中)
mongos  --port 25017  --configdb 127.0.0.1:23017
创建多个分片服务器 (负责数据存储)
mongod  --port 27017 --dbpath  "c:\mongodb\data\dbs\shard27017"

mongod  --port 27018 --dbpath  "d:\mongodb\data\dbs\shard27018"

mongod  --port 27019 --dbpath  "f:\mongodb\data\dbs\shard27019"

mongod  --port 27020 --dbpath  "e:\mongodb\data\dbs\shard27020"
连接mongos服务器添加shard27017|shard27018|shard27019|shard27020分片服务器到configs服务器中。
mongo localhost:25017/admin

db.runCommand( { addshard : "localhost:27017", allowLocal : 1} )

db.runCommand( { addshard : "localhost:27018", allowLocal : 1} )

db.runCommand( { addshard : "localhost:27019", allowLocal : 1} )

db.runCommand( { addshard : "localhost:27020", allowLocal : 1} )

创建相应数据库并设置其"可以sharding",对dnt_mongodb库启用分片功能
db.runCommand({"enablesharding":"dnt_mongodb"})
注意:需要分片的集合 的shard key必须是索引键, (我们也可以在mongos为分片foo集合创建索引)
db.runCommand( { shardcollection : "dnt_mongodb.posts1", key : {_id : 1}, unique: true } )   
至此自动分片就创建完成了,可以在mongos或configs服务器查询分片信息。
db.printShardingStatus()



今天,同事测试了1100W数据。没问题。一条数据都没有丢。先标记保留。有时间在测试一次。

2013-05-29 晚
硬件环境:
CPU 双核 硬盘:7200转 内存:2G
软件环境:
myeclipse mongodb2.5.jar mongodb2.4.3
测试规则(一):
没有采用分片,进行100W数据插入操作。字段有ID和URL。
测试结果:
没有出现数据丢失。


测试规则(二):
没有采用分片,进行1000W数据插入操作。字段有ID和URL。
测试结果:
mongodb关闭。写入I/O错误。
分享到:
评论

相关推荐

    mongodb-win32-x86_64-2.0.1

    MongoDB 是一个高性能、开源、无模式...总的来说,MongoDB 2.0.1是一个强大且稳定的数据库版本,特别适合处理大规模、非结构化或半结构化的数据,对于需要高性能、高可用性的Web应用和大数据解决方案,它是理想的选择。

    mongodb-测试数据

    这个“mongodb-测试数据”压缩包显然包含了一些用于测试MongoDB功能的样例数据集,特别是针对增、删、改、查(CRUD)操作的学习和性能测试。 在深入探讨MongoDB的测试数据之前,我们先来了解一下MongoDB的基本概念...

    mongodb数据库管理工具

    3. **数据导入导出**:支持将数据从CSV、JSON等格式导入到MongoDB,也可以将数据导出为这些格式,方便数据迁移和备份。 4. **文档编辑与创建**:允许用户直接在界面上创建、编辑和删除MongoDB文档,无需编写插入或...

    mongodb-async-driver-2.0.1 jar包

    在"mongodb-async-driver-2.0.1.jar"这个特定版本中,我们关注的是2.0.1版本的异步驱动程序。这个版本可能包含了以下关键知识点: 1. **非阻塞I/O**:异步驱动程序的核心是利用非阻塞I/O模型,使得程序在等待数据...

    mongodb-async-driver-2.0.1.rar

    在IT行业中,MongoDB常用于处理大规模数据存储和实时分析任务。在本案例中,我们讨论的是"Mongodb-async-driver-2.0.1.rar",这是一个针对MongoDB的异步驱动程序的压缩包,版本为2.0.1。 异步驱动程序是MongoDB...

    SpringBoot+MongoDB+Echarts图表数据可视化

    综上所述,"SpringBoot+MongoDB+Echarts图表数据可视化"项目利用SpringBoot作为后端处理逻辑,MongoDB作为数据存储,Echarts作为前端数据展示工具,共同实现了高效、直观的数据可视化解决方案。这个组合在现代Web...

    MongoDb多数据中心

    MongoDB作为一个高性能、高可用性、以及易于扩展的开源NoSQL数据库,被广泛应用于需要处理大量数据的场景中。随着业务的发展,单一数据中心往往难以满足地理分布、数据可用性和合规性等需求。这时,多数据中心部署...

    geoserver发布mongodb矢量数据地图服务.docx

    Geoserver发布MongoDB矢量数据地图服务 Geoserver是一款功能强大且开源的地理信息系统(GIS)服务器,能够实现空间数据的存储、处理和发布。MongoDB是一款NoSQL数据库,能够存储大量的矢量数据。本文将介绍如何使用...

    MongoDB热温数据的最佳实践.pdf

    - **安全性**:确保数据迁移过程中的数据安全,防止数据丢失或泄露。 - **自定义**:用户可以根据自身需求定制迁移策略,满足特定业务场景的需求。 通过这些策略,MongoDB能够有效地管理热温数据,提高数据库性能...

    mongodb与oralce的数据同步

    MongoDB与Oracle数据库的数据同步是现代企业数据管理中常见的需求,尤其在大数据处理和分布式系统中。MongoDB是一个流行的文档型数据库,而Oracle则是一款成熟的SQL关系型数据库。本示例将探讨如何通过Java实现...

    Sping boot MongoDB 配置多数据源

    在Spring Boot应用中,MongoDB的多数据源配置是一项关键任务,特别是在大型分布式系统中,可能需要连接到多个数据库以实现数据隔离、读写分离或灾难恢复策略。本篇文章将详细解析如何在Spring Boot中配置MongoDB的多...

    深入了解MongoDB是如何存储数据的

    本文主要介绍了关于MongoDB存储数据的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 想要深入了解MongoDB如何存储数据之前,有一个概念必须清楚,那就是Memeory-Mapped Files。 Memeory-Mapped ...

    beego(V2.0.1)+Mongodb项目demo,简单易学

    **beego V2.0.1 + MongoDB 项目实践** 在本文中,我们将深入探讨如何使用 Go 语言的 beego 框架 V2.0.1 版本结合 MongoDB 数据库来创建一个简单的项目。beego 是一个快速、强大的 Go Web 开发框架,它提供了一种...

    mongodb-async-driver-2.0.1驱动.zip

    mongodb-async-driver-2.0.1驱动文件 jar MongoDB Async Java Driver Documentation Welcome to the MongoDB Async Java driver documentation hub. Getting Started The Getting Started guide contains ...

    canal 的 mysql 与 redis/memcached/mongodb 的 nosql 数据实时同步方案

    8. **数据迁移和同步的挑战**: 需要注意的是,数据迁移和同步过程中可能遇到的问题包括数据丢失、延迟、性能影响以及兼容性问题。在实际应用中,需要根据业务需求和数据库特性进行适当的配置和优化。 9. **应用场景...

    基于Hadoop与MongoDB整合技术的大数据处理分析.pdf

    通过了解和掌握这两种技术的整合方法,能够为解决复杂的数据问题提供有效途径,并且在性能优化和系统扩展方面发挥重要作用。在不断变化的大数据领域中,这种整合技术将成为推动数据处理发展的重要力量。

    通过java向mongodb中插入数据

    【标题】: "Java操作MongoDB插入数据指南" 【描述】: 本指南将详细介绍如何在Linux环境下安装MongoDB,并通过Java进行数据插入操作。我们将涵盖MongoDB的Linux安装、MongoVUE客户端的使用以及Java API与MongoDB的...

Global site tag (gtag.js) - Google Analytics