• mongoDB


    1. mongoDB是什麽

    mongodb是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式。

    存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(Binary JSON)。

    模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。

    mongodb中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”。

    2. 安装mongoDB

    MongoDB安装很简单,基本无需安装,安装包解压后即可使用。

    2.1 用tar包安装

    2.1.1 从官网下载最新版本mongoDB的tar包,解压

    1
    2
    3
    4
    # curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.7.tgz
    # tar -zxvf mongodb-linux-x86_64-3.0.7.tgz
    # mkdir -p mongodb
    # cp -R -n mongodb-linux-x86_64-3.0.7/ mongodb

    2.1.2 创建数据目录

    1
    # mkdir -p /data/mongodb

    2.1.3 启动mongoDB,有两种方法:

    命令行指定数据目录启动

    1
    # mongod --dbpath /data/mongodb --logpath /var/log/mongodb.log

    指定配置文件启动

    1
    # mongod -f /etc/mongod_27019.conf

    2.1.4 停止mongoDB

    1
    # mongod -f /etc/mongod_27019.conf --shutdown

    2.2 用yum安装

    本文例子是在Cent OS 7上进行安装,mongoDB版本是3.0

    2.2.1 添加yum源

    1
    2
    3
    4
    5
    6
    # vi /etc/yum.repos.d/mongodb-org-3.0.repo
    [mongodb-org-3.0]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
    gpgcheck=0
    enabled=1

    2.2.2 安装mongoDB

    1
    # yum install -y mongodb-org

    2.2.3 启动mongoDB

    1
    # systemctl start mongod

    设定文件位置:/etc/mongod.conf

    数据库路径:/var/lib/mongo

    2.2.4 问题点

    1
    WARNING: Readahead for /var/lib/mongo is set to 4096KB

    1. 日志里出现上面的信息,需要调整Readahead的大小

    1
    2
    3
    # blockdev --report
    # blockdev --setra 256 /dev/sda
    # blockdev --setra 256 /dev/dm-1

    2. 日志里出现下面信息,需要修改内核参数

    1
    WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.

    关闭透明大页

    1
    2
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag

    3. Cent OS 7上需要把mongoDB添加到systemd,否则会出现下面的错误

    1
    systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..

    将mongoDB添加到systemd

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # vi /usr/lib/systemd/system/mongod.service
    [Unit]
    Description=mongodb database
     
    [Service]
    User=mongod
    Group=mongod
    Environment="OPTIONS=--quiet -f /etc/mongod.conf"
    ExecStart=/usr/bin/mongod $OPTIONS run
    PIDFile=/var/run/mongodb/mongod.pid
     
    [Install]
    WantedBy=multi-user.target

    建立链接

    1
    # ln -s /usr/lib/systemd/system/mongod.service /etc/systemd/system/multi-user.target.wants/

    重新加载systemctl

    1
    # systemctl daemon-reload

    2.3 设定文件说明

    设定文件 /etc/mongod.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    processManagement:
       fork: true
     
    net:
       bindIp: 127.0.0.1
       port: 27017
     
    storage:
       dbPath: /srv/mongodb
     
    systemLog:
       destination: file
       path: "/var/log/mongodb/mongod.log"
       logAppend: true
     
    storage:
       journal:
          enabled: true

    processManagement.fork: true 以daemon模式启动mongod

    net.bindIp: 指定IP,逗号分隔,注释掉的情况下,服务启动在0.0.0.0

    systemLog.quiet: true 日志输出使用quiet模式,只输出critical

    storage.dbPath: 指定数据的存放位置

    replication.replSetName: 副本集的名字

    security.authorization: enabled 使用认证

    security.keyFile: 使用keyFile

    verbosity: 日志开启debug模式,0-5

    operationProfiling.slowOpThresholdMs: slowlog设定,默认100

    net.http.RESTInterfaceEnabled: rest接口是否有效

    net.maxIncomingConnections: 最大连接数,默认65536,不能超过系统设置,# ulimit -n

    3. 使用mongoDB

    下面列出一些使用mongoDB的常用命令,其他还有很多,详细参照官方文档

    3.1 连接mongoDB

    1
    # mongo

     3.2 查看数据库

    1
    > show dbs

    3.2 切换数据库,没有的时候创建

    1
    > use new2

    3.3 查看collection

    1
    2
    > show collections
    > show tables

    3.4 查看当前数据库状态

    1
    > db.stats()

    3.5 插入数据

    1
    > db.user.insert({"username":"test1","age":12,"sex":"m"})

    3.6 查找数据

    查找集合中所有数据

    1
    > db.user.find()

    指定条件查找数据

    1
    2
    > db.user.find({age: {$gt: 10}});
    > db.user.find({sex: /m/});

    3.7 统计数据

    1
    > db.user.count()

    指定条件统计数据

    1
    > db.user.count({sex: "m"});

    3.8 删除记录

    1
    > db.user.remove({age: 12});

     

    3.9 删除collection

    1
    > db.user.drop()

    3.10 复制数据库

    1
    > db.copyDatabase("new2""new3""127.0.0.1");

    3.11 删除当前数据库

    1
    > db.dropDatabase();

    3.12 释放空间

    1
    > db.repairDatabase()

    3.13 停止mongodb

    1
    2
    > use admin
    > db.shutdownServer()

    3.14 帮助文件

    1
    2
    > help
    > db.help()

    4. mongoDB状态页面

    4.1 打开自带的状态页

    1
    2
    3
    4
    5
    # vi /etc/mongod.conf
    net:
      port: 27017
      http:
        enabled: true

    4.2 浏览器访问

    http://IP:28017/

    5. 后记

    本文只是初步学习一下mongoDB的安装和使用,副本集,分片等功能,接下来会进行介绍。

     
  • 相关阅读:
    pip 查看软件包 可用版本并安装; pip 查看 numpy 可用版本并安装
    git submodule git 子模块管理相关操作
    git 取消文件跟踪
    C 实战练习题目1
    VC6.0设置注释快捷键
    2019-11-29-WPF-非客户区的触摸和鼠标点击响应
    2019-11-29-VisualStudio-使用新项目格式快速打出-Nuget-包
    2019-11-29-WPF-从触摸消息转触摸事件
    2019-11-29-win7-无法启动-WPF-程序-D3Dcompiler_47.dll-丢失
    2019-11-29-C#-序列类为-xml-可以使用的特性大全
  • 原文地址:https://www.cnblogs.com/landv/p/12074677.html
Copyright © 2020-2023  润新知