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

  • 相关阅读:
    day07 Pyhton学习
    day06 Pyhton学习
    Python数据分析【炼数成金15周完整课程】
    传智 Python基础班+就业班+课件 【最新完整无加密视频课程】
    万门大学Python零基础10天进阶班视频教程
    【Python高级工程师之路】入门+进阶+实战+爬虫+数据分析整套教程
    python入门:in 的用法(它在不在这个字符串里面)
    python入门:py2.x里面除法或乘法这么写就可以计算小数点后面结果
    python入门:简单模拟登陆时UTF-8转换成GBK编码
    python入门:UTF-8转换成GBK编码
  • 原文地址:https://www.cnblogs.com/guoyinli/p/9147872.html
Copyright © 2011-2022 走看看