zoukankan      html  css  js  c++  java
  • 第一部分:MongoDB备忘录

    一、NoSQL 简介

      Nosql的全称是Not Only Sql,这个概念早起就有人提出,在09年的时候比较火。Nosql指的是非关系型数据库,而我们常用的都是关系型数据库。就像我们常用的mysql,sqlserver,oracle一样,这些数据库一般用来存储重要信息,应对普通的业务是没有问题的。但是,随着互联网的高速发展,传统的关系型数据库在应付超大规模,超大流量以及高并发的时候力不从心。而就在这个时候,Nosql得到的告诉的发展。

    二、MongoDB备忘录

    1、首先说一下自己在使用MongoDB过程中踩过的坑,安装的时候很简单,解压安装完成。我安装的版本是v3.6.5,使用中也非常简单

    最简单的启动指令:mongod
    
    带认证的启动指令:mongod -dbpath /data/db -auth
    
    指定配置文件启动的指令:mongod -config /etc/mongod.conf

    2、启动后使用mongo进入shell界面,就可以操作数据库了,下面列一些我还记住的指令,不知道的指令区runoob上查一下

    查看数据库:show dbs
    
    使用数据库:use <db_name>
    
    查看集合(表):show collections
    
    查看一条内容:db.school.findOne()

    3、上面说到了使用认证方式启动mongodb,那么认证的前提当然是需要有用户名和密码了,下面记录一下如何增加认证用户。

    > use admin
    switched to db admin
    > db.createUser(
    ...   {
    ...     user: "dba",
    ...     pwd: "dba",
    ...     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
    ...   }
    ... )
    Successfully added user: {
        "user" : "dba",
        "roles" : [
            {
                "role" : "userAdminAnyDatabase",
                "db" : "admin"
            }
        ]
    }
    • user:用户名
    • pwd:密码
    • db : 数据库名字
    • roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。

    role里的角色可以选:

    Built-In Roles(内置角色):
    1. 数据库用户角色:read、readWrite;
    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4. 备份恢复角色:backup、restore;
    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    6. 超级用户角色:root  
    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
    7. 内部角色:__system
    具体角色:
    read:允许用户读取指定数据库
    readWrite:允许用户读写指定数据库
    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    root:只在admin数据库中可用。超级账号,超级权限

    开启用户权限

    新建mongodb.conf文件,并加入“auth=true”

    从配置文件启动mongodb服务

    ./bin/mongod -f mongodb.conf

    用户验证

    [caideyang@localhost mongodb3.2.10]$ ./bin/mongo 
    MongoDB shell version: 3.6.1
    connecting to: test
    > use admin
    switched to db caideyang
    > db.auth('admin','admin')
    1
    >

    mongodb.conf配置文件

    #数据库数据存放目录
    dbpath=/usr/local/mongodb304/data
    #数据库日志存放目录
    logpath=/usr/local/mongodb304/logs/mongodb.log 
    #以追加的方式记录日志
    logappend = true
    #端口号 默认为27017
    port=27017 
    #以后台方式运行进程
    fork=true 
     #开启用户认证
    auth=true
    #关闭http接口,默认关闭http端口访问
    nohttpinterface=true
    #mongodb所绑定的ip地址
    bind_ip = 127.0.0.1,192.168.1.140
    #启用日志文件,默认启用
    journal=true 
    #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
    quiet=true

    其他配置参数含义

    --quiet # 安静输出
    --port arg  # 指定服务端口号,默认端口27017
    --bind_ip arg   # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP
    --logpath arg   # 指定MongoDB日志文件,注意是指定文件不是目录
    --logappend # 使用追加的方式写日志
    --pidfilepath arg   # PID File 的完整路径,如果没有设置,则没有PID文件
    --keyFile arg   # 集群的私钥的完整路径,只对于Replica Set 架构有效
    --unixSocketPrefix arg  # UNIX域套接字替代目录,(默认为 /tmp)
    --fork  # 以守护进程的方式运行MongoDB,创建服务器进程
    --auth  # 启用验证
    --cpu   # 定期显示CPU的CPU利用率和iowait
    --dbpath arg    # 指定数据库路径
    --diaglog arg   # diaglog选项 0=off 1=W 2=R 3=both 7=W+some reads
    --directoryperdb    # 设置每个数据库将被保存在一个单独的目录
    --journal   # 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里
    --journalOptions arg    # 启用日志诊断选项
    --ipv6  # 启用IPv6选项
    --jsonp # 允许JSONP形式通过HTTP访问(有安全影响)
    --maxConns arg  # 最大同时连接数 默认2000
    --noauth    # 不启用验证
    --nohttpinterface   # 关闭http接口,默认关闭27018端口访问
    --noprealloc    # 禁用数据文件预分配(往往影响性能)
    --noscripting   # 禁用脚本引擎
    --notablescan   # 不允许表扫描
    --nounixsocket  # 禁用Unix套接字监听
    --nssize arg (=16)  # 设置信数据库.ns文件大小(MB)
    --objcheck  # 在收到客户数据,检查的有效性,
    --profile arg   # 档案参数 0=off 1=slow, 2=all
    --quota # 限制每个数据库的文件数,设置默认为8
    --quotaFiles arg    # number of files allower per db, requires --quota
    --rest  # 开启简单的rest API
    --repair    # 修复所有数据库run repair on all dbs
    --repairpath arg    # 修复库生成的文件的目录,默认为目录名称dbpath
    --slowms arg (=100) # value of slow for profile and console log
    --smallfiles    # 使用较小的默认文件
    --syncdelay arg (=60)   # 数据写入磁盘的时间秒数(0=never,不推荐)
    --sysinfo   # 打印一些诊断系统信息
    --upgrade   # 如果需要升级数据库 * Replicaton 参数
    
    --------------------------------------------------------------------------------
    
    --fastsync  # 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步
    --autoresync    # 如果从库与主库同步数据差得多,自动重新同步,
    --oplogSize arg # 设置oplog的大小(MB) * 主/从参数
    
    --------------------------------------------------------------------------------
    
    --master    # 主库模式
    --slave # 从库模式
    --source arg    # 从库 端口号
    --only arg  # 指定单一的数据库复制
    --slavedelay arg    # 设置从库同步主库的延迟时间 * Replica set(副本集)选项:
    
    --------------------------------------------------------------------------------
    
    --replSet arg   # 设置副本集名称 * Sharding(分片)选项
    
    --------------------------------------------------------------------------------
    --configsvr # 声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb
    --shardsvr  # 声明这是一个集群的分片,默认端口27018
    --noMoveParanoia    # 关闭偏执为moveChunk数据保存

    备份还原数据库

    备份

    [caideyang@localhost mongodb3.2.10]$ ./bin/mongodump --port=27017 -ucdy -ppasswd --db=caideyang -o /home/caideyang/backup/
    2016-10-30T15:58:58.082+0800    writing caideyang.score to 
    2016-10-30T15:58:58.083+0800    writing caideyang.user to 
    2016-10-30T15:58:58.084+0800    done dumping caideyang.score (4 documents)
    2016-10-30T15:58:58.085+0800    done dumping caideyang.user (2 documents)
    [caideyang@localhost ~]$ tree backup/
    backup/
    └── caideyang
        ├── score.bson
        ├── score.metadata.json
        ├── user.bson
        └── user.metadata.json
    
    1 directory, 4 files
    

    还原

    [caideyang@localhost mongodb3.2.10]$ ./bin/mongorestore --port=27017 -ucdy -ppasswd --db=caideyang ../backup/caideyang/
    2016-10-30T16:04:43.914+0800    building a list of collections to restore from ../backup/caideyang dir
    2016-10-30T16:04:43.918+0800    reading metadata for caideyang.score from ../backup/caideyang/score.metadata.json
    2016-10-30T16:04:43.918+0800    reading metadata for caideyang.user from ../backup/caideyang/user.metadata.json
    2016-10-30T16:04:43.918+0800    restoring caideyang.score from ../backup/caideyang/score.bson
    2016-10-30T16:04:43.918+0800    restoring caideyang.user from ../backup/caideyang/user.bson
    2016-10-30T16:04:43.930+0800    error: multiple errors in bulk operation:
      - E11000 duplicate key error collection: caideyang.user index: _id_ dup key: { : ObjectId('5815a5fa5fee222be4c321c9') }
      - E11000 duplicate key error collection: caideyang.user index: _id_ dup key: { : ObjectId('5815a63a5fee222be4c321ca') }
    
    2016-10-30T16:04:43.930+0800    restoring indexes for collection caideyang.user from metadata
    2016-10-30T16:04:43.936+0800    finished restoring caideyang.user (2 documents)
    2016-10-30T16:04:43.988+0800    restoring indexes for collection caideyang.score from metadata
    2016-10-30T16:04:43.989+0800    finished restoring caideyang.score (4 documents)
    2016-10-30T16:04:43.989+0800    done
    [caideyang@localhost mongodb3.2.10]$

    注:部分内容引用自 https://www.jianshu.com/p/5844fdfa9511

  • 相关阅读:
    ubuntu下文件安装与卸载
    webkit中的JavaScriptCore部分
    ubuntu 显示文件夹中的隐藏文件
    C语言中的fscanf函数
    test
    Use SandCastle to generate help document automatically.
    XElement Getting OuterXML and InnerXML
    XUACompatible meta 用法
    Adobe Dreamweaver CS5.5 中文版 下载 注册码
    The Difference Between jQuery’s .bind(), .live(), and .delegate()
  • 原文地址:https://www.cnblogs.com/guoyinli/p/9147872.html
Copyright © 2011-2022 走看看