zoukankan      html  css  js  c++  java
  • 5.非关系数据库(Nosql)它mongodb:创建一个集合,导出和导入备份, 数据恢复,进出口

    

    1 固定集合

    固定集合值得是事先创建并且大小固定的集合

    2 固定集合的特征:固定集合非常像环形队列。假设空间不足,最早文档就会被删除,为新的文档腾出空间。一般来说。固定集合适用于不论什么想要自己主动淘汰过期属性的场景,没有太多的操作限制。

    3 创建固定集合使用命令:

    db.createCollection(“collectionName”,{capped:true,size:100000,max:100});

    size:指定集合大小,单位为KB,max指定文档的数量

    当指定文档数量上限时,必须同一时候指定大小。

    淘汰机制仅仅有在容量还没有满时才会根据文档数量来工作。要是容量满了,淘汰机制根据容量来工作。

    4 创建一个集合:

    >db.createCollection("cap1",{capped:true,size:1000,max:100});

    { "ok" : 1 }

    5 插入数据

    > for(var i=1;i<=100;i++){

    ...db.cap1.insert({name:"dongxue",age:i});

    ... }

    WriteResult({ "nInserted" : 1 })

    > db.cap1.find().count();

    53   (大小之所以是53是由于大小超过了1000

    6 固定集合的应用场景:聊天记录。日志信息

          淘汰机制:当满足size指定集合大小。不能再继续往固定集合中加数据。

          固定集合的容量优先

    当文档达到100条时,再加入的时候会替换先前的

     

    7 备份与导入导出。

    MongoDB提供了备份和回复的功能,各自是MongoDB下载文件夹下的mongodump.exemongorestore.exe文件。

     

    备份数据使用以下的命令:

    mongodump –h dbhost –d dbname –o dbdirectory

    -h:MonDB所在server地址,比如:127.0.0.1,当然也能够指定port号:127.0.0.1:27017,当然该文件夹须要提前创建。在备份完毕后,系统自己主动在dump文件夹下建立一个test文件夹,这个文件夹里面存放该数据库实例的备份数据。 

    mongodump -h localhost:27017 -d toto -of:/beifeng

    -h:用来指定要输出的数据库所在的ip地址和port号

    -d:  指定要备份的数据库

    -o:  表示要备份到的文件文件夹

    运行后的效果图:

    7 另外启动一个mongodb的client,目的是将数据库中toto数据库删掉

    C:Users o-to>mongo

    MongoDB shell version: 2.6.4

    connecting to: test

    > use toto;

    switched to db toto

    > db.help();

    DB methods:

            db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.r

    unCommand(...) ]

            db.auth(username, password)

            db.cloneDatabase(fromhost)

            db.commandHelp(name) returns the help for the command

            db.copyDatabase(fromdb, todb, fromhost)

            db.createCollection(name, { size : ..., capped : ..., max : ... } )

            db.createUser(userDocument)

            db.currentOp() displays currently executing operations in the db

            db.dropDatabase()

            db.eval(func, args) run code server-side

            db.fsyncLock() flush data to disk and lock server for backups

            db.fsyncUnlock() unlocks server following a db.fsyncLock()

            db.getCollection(cname) same as db['cname'] or db.cname

            db.getCollectionNames()

            db.getLastError() - just returns the err msg string

            db.getLastErrorObj() - return full status object

            db.getMongo() get the server connection object

            db.getMongo().setSlaveOk() allow queries on a replication slave server

            db.getName()

            db.getPrevError()

            db.getProfilingLevel() - deprecated

            db.getProfilingStatus() - returns if profiling is on and slow threshold

            db.getReplicationInfo()

            db.getSiblingDB(name) get the db at the same server as this one

            db.getWriteConcern() - returns the write concern used for any operations on this db, inherit

    ed from server object if set

            db.hostInfo() get details about the server's host

            db.isMaster() check replica primary status

            db.killOp(opid) kills the current operation in the db

            db.listCommands() lists all the db commands

            db.loadServerScripts() loads all the scripts in db.system.js

            db.logout()

            db.printCollectionStats()

            db.printReplicationInfo()

            db.printShardingStatus()

            db.printSlaveReplicationInfo()

            db.dropUser(username)

            db.repairDatabase()

            db.resetError()

            db.runCommand(cmdObj) run a database command.  if cmdObj is a string, turns it into { cmdObj

     : 1 }

            db.serverStatus()

            db.setProfilingLevel(level,<slowms>) 0=off 1=slow 2=all

            db.setWriteConcern( <write concern doc> ) - sets the write concern for writes to the db

            db.unsetWriteConcern( <write concern doc> ) - unsets the write concern for writes to the db

            db.setVerboseShell(flag) display extra information in shell output

            db.shutdownServer()

            db.stats()

            db.version() current version of the server

    > db.dropDatabase();

    { "dropped" : "toto", "ok" : 1 }

    8 数据还原

    mongorestore -h localhost:27017 -d toto -directoryperdb F:/beifeng/toto

    -h:MongoDB所在server地址,比如:127.0.0.1,当然也能够指定port号:127.0.0.1:27017

    -d:须要备份的数据库实例,比如test

    -o:备份的数据存放位置,当然该文件夹须要提前建立,在备份完毕后,系统自己主动在dump文件夹下建立一个test文件夹,这个文件夹里面存放数据库实例的备份数据。

    C:Users o-to> mongorestore -h localhost:27017 -d toto -directoryperdb F:/beifeng/toto

    connected to: localhost:27017

    2014-10-15T23:19:11.071+0800 F:/beifeng/totoc3.bson

    2014-10-15T23:19:11.071+0800    going into namespace [toto.c3]

    2014-10-15T23:19:14.009+0800            Progress: 5740200/54000000      10%     (bytes)

    2014-10-15T23:19:17.010+0800            Progress: 10125000/54000000     18%     (bytes)

    2014-10-15T23:19:20.010+0800            Progress: 15660000/54000000     29%     (bytes)

    2014-10-15T23:19:23.011+0800            Progress: 22528800/54000000     41%     (bytes)

    2014-10-15T23:19:26.013+0800            Progress: 29586600/54000000     54%     (bytes)

    2014-10-15T23:19:29.013+0800            Progress: 36752400/54000000     68%     (bytes)

    2014-10-15T23:19:32.000+0800            Progress: 43372800/54000000     80%     (bytes)

    2014-10-15T23:19:35.001+0800            Progress: 50284800/54000000     93%     (bytes)

    1000000 objects found

    2014-10-15T23:19:36.579+0800    Creating index: { key: { _id: 1 }, name: "_id_", ns: "toto.c3" }

    2014-10-15T23:19:36.641+0800    Creating index: { unique: true, key: { age: 1 }, name: "age_1", ns:

    "toto.c3" }

    2014-10-15T23:19:41.440+0800 F:/beifeng/totocap1.bson

    2014-10-15T23:19:41.440+0800    going into namespace [toto.cap1]

    2014-10-15T23:19:41.440+0800    Created collection toto.cap1 with options: { "create" : "cap1", "cap

    ped" : true, "size" : 4096, "max" : 100 }

    53 objects found

    2014-10-15T23:19:41.440+0800    Creating index: { key: { _id: 1 }, name: "_id_", ns: "toto.cap1" }

    2014-10-15T23:19:41.440+0800 F:/beifeng/totocap2.bson

    2014-10-15T23:19:41.440+0800    going into namespace [toto.cap2]

    2014-10-15T23:19:41.440+0800    Created collection toto.cap2 with options: { "create" : "cap2", "cap

    ped" : true, "size" : 4096, "max" : 100 }

    file F:/beifeng/totocap2.bson empty, skipping

    2014-10-15T23:19:41.456+0800    Creating index: { key: { _id: 1 }, name: "_id_", ns: "toto.cap2" }

     

    C:Users o-to>

     

     

    9 导入导出:

    用到的应用mongoexport,mongoimport

    mongoexport –h dhost –d dbname –c collectionName –o output

    參数说明:

    -h 数据库地址

    -d 指明使用的库

    -c 指明要导出的集合

    -o 指明要导出的文件名称

    dname:表示要导出的数据库

    collectionName:表示导出哪个集合

    output:表示导出到的位置。

    C:Users o-to>mongoexport -h localhost:27017 -d toto -c c3 -o f:/beifen/c3.txt

    connected to: localhost:27017

    exported 1000000 records

     

    C:Users o-to>

    相同能够数据导出到doc

    数据导入:

    mongoimport -h localhost:27017 -d toto -c ccc f:/beifen/c3.txt

    C:Users o-to>mongo

    MongoDB shell version: 2.6.4

    connecting to: test

    > use toto

    switched to db toto

    > show tables;

    c3

    cap1

    cap2

    ccc

    system.indexes

    > db.ccc.find();

    { "_id" : ObjectId("543e7473256769913d467e75"), "name" : "zhangsan", "age" : 1 }

    { "_id" : ObjectId("543e7473256769913d467e76"), "name" : "zhangsan", "age" : 2 }

    { "_id" : ObjectId("543e7473256769913d467e77"), "name" : "zhangsan", "age" : 3 }

    { "_id" : ObjectId("543e7473256769913d467e78"), "name" : "zhangsan", "age" : 4 }

    { "_id" : ObjectId("543e7473256769913d467e79"), "name" : "zhangsan", "age" : 5 }

    { "_id" : ObjectId("543e7473256769913d467e7a"), "name" : "zhangsan", "age" : 6 }

    { "_id" : ObjectId("543e7473256769913d467e7b"), "name" : "zhangsan", "age" : 7 }

    { "_id" : ObjectId("543e7473256769913d467e7c"), "name" : "zhangsan", "age" : 8 }

    { "_id" : ObjectId("543e7473256769913d467e7d"), "name" : "zhangsan", "age" : 9 }

    { "_id" : ObjectId("543e7473256769913d467e7e"), "name" : "zhangsan", "age" : 10 }

    { "_id" : ObjectId("543e7473256769913d467e7f"), "name" : "zhangsan", "age" : 11 }

    { "_id" : ObjectId("543e7473256769913d467e80"), "name" : "zhangsan", "age" : 12 }

    { "_id" : ObjectId("543e7473256769913d467e81"), "name" : "zhangsan", "age" : 13 }

    { "_id" : ObjectId("543e7473256769913d467e82"), "name" : "zhangsan", "age" : 14 }

    { "_id" : ObjectId("543e7473256769913d467e83"), "name" : "zhangsan", "age" : 15 }

    { "_id" : ObjectId("543e7473256769913d467e84"), "name" : "zhangsan", "age" : 16 }

    { "_id" : ObjectId("543e7473256769913d467e85"), "name" : "zhangsan", "age" : 17 }

    { "_id" : ObjectId("543e7473256769913d467e86"), "name" : "zhangsan", "age" : 18 }

    { "_id" : ObjectId("543e7473256769913d467e87"), "name" : "zhangsan", "age" : 19 }

    { "_id" : ObjectId("543e7473256769913d467e88"), "name" : "zhangsan", "age" : 20 }

    Type "it" for more

    上面自己主动隐式创建了一个ccc集合。

     

    9 mongodb安全认证

    每一个mongodb实例中的数据库都能够有很多用户,假设开启了安全性检查,仅仅有数据库认证用户才干运行读或者写操作。在认证的上下文中。MongoDB会将普通的数据作为admin

    数据库处理。Admin数据库中的用户被视为超级用户(即:管理员)

    在认证之后,管理员能够读写全部数据库,运行特定的管理员命令。运行listDatabaseshutdown.

    在开启安全检查之前。一定要至少一个管理员账号。

    1. 最少得保证有一个管理员账号(admin 数据库其中的用户都是管理员)

      use admin

      db.addUser(“username”,”password”);

    2.有了管理员账号。就能够为其他的数据库分配用户。

        2.1 首先要跳转到被分配的数据库

    3.须要又一次启动mongodb服务,开启安全检查

    4.接下来的client连接mongodb,须要登录才干运行对应的操作。

    C:Users o-to>mongo localhost:27017/admin

    MongoDB shell version: 2.6.4

    connecting to: localhost:27017/admin

    > db

    admin

     

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    Effective C# Item27:避免ICloneable接口
    Effective C# Item28:避免强制类型转换
    Effective C# Item25:尽可能将类型实现为可序列化的类型
    Effective C# Item31:尽可能实现短小简洁的方法
    Effective C# Item26:使用IComarable和IComparer接口实现排序关系
    Effective C# Item33:限制类型的可见性
    Effective C# Item24:声明式编程优于命令式编程
    Effective C# Item34:创建大粒度的Web API
    Effective C# Item32:尽可能实现小尺寸、高内聚的程序集
    Effective C# Item21:使用委托表达回调
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4668741.html
Copyright © 2011-2022 走看看