MongoDB学习--安装与管理

本文详细介绍了MongoDB的特性,包括其易用性、扩展性、丰富的功能及卓越的性能。接着,提供了MongoDB在Windows和Linux下的安装步骤,包括创建数据存放目录、配置文件、启动服务等。此外,还探讨了MongoDB集群的两种主要模式:副本集和分片集群,以及相关角色和安装配置。最后,提到了一些性能优化策略,如内存分配和内核参数调整。
摘要由CSDN通过智能技术生成

一、简介

        MongoDB是一种强大、灵活,且易于扩展的通用型数据库。他能扩展出非常多的功能。如二级索引(secondary index)、范围查询(range query)、排序、聚合(aggregation),以及地理空间索引(geospatial index)。

        1、易于使用

        MongoDB是一个面向文档(document-oriented)的数据库,而不是关系型数据库。面向文档的数据库不在有“行(row)”的概念,取而代之的是更为灵活的“文档(document)”模型。通过在文档中嵌入文档和数组,面向文档的方法能够仅适用一条记录来表现复杂的层次关系。

        不在有预定义模式(predefined schema),文档的键(key)和值(value)不在是固定的类型和大小。由于没有固定的模式,根据需要添加或删除字段变得更容易了。

        2、易于扩展

        MongoDB的设计采用横向扩展。面向文档的数据模型使它很容易地在多台服务器之间进行数据切割。MongoDB能自动处理跨集群的数据和负载,自动重新分配文档,以及将用户的路由到正确机器上。

        3、丰富的功能

        MongoDB作为一款通用型数据库,除了能够创建、读取、更新和删除数据之外,还提供一系列不断扩展的独特功能。

        索引(indexing):

        MongoDB支持通用二级索引,允许多种快速查找,且提供唯一索引、符合索引、地理空间索引,以及全文索引。

        聚合(aggregation):

        MongoDB支持“聚合管道(aggregation pipeline)”。用户能够通过简单的片段创建复杂的聚合,并通过数据库自动优化。

        特殊的集合类型:

        MongoDB支持存在时间有限的集合,适用于那些将在某个时刻过期的数据,如会话(session)。类似的,MongoDB也支持固定大小的集合,用于保存近期数据,如日志。

        文件存储(file storage):

        MongoDB支持一种非常易用的协议,用于存储大文件和文件元数据。

        MongoDB并不具备一些在关系型数据库中很普遍的功能,如连接(join)和复杂的多事务(multirow transcation)。省略这些功能是出于架构上的考虑(为了得到更好的扩展性),因为在分布式系统中这两个功能难以高效地实现。

        4、卓越的性能

        MongoDB能对文档尽心动态填充(dynamic padding),也能预分配数据文件以利用额外的空间来换取稳定的新能。MongoDB把尽可能多的内存用作缓存(cache),一般会用尽服务器的可用内存,试图为每次查询自动选择正确的索引。  所以MongoDB会非常占用服务器内存,目前并没有什么办法可以限制MongoDB占用内存的方法,所以一般不建议在MongoDB服务器上启用其他进程。

二、下载安装包

下载地址为:https://www.mongodb.com/download-center?jmp=nav#community

Windows: mongodb-win32-x86_64-2008plus-ssl-3.6.4.zip

Linux(CentOS 7): mongodb-linux-x86_64-rhel70-3.6.4.tgz

注意:这里下载的都是压缩包,本文不提供rpm和msi等可执行程序的安装方式

三、Windows下的MongoDB单节点安装

我们将下载完的包解压:C:/context/mongodb

在工作目录下创建MongoDB数据存放目录:D:/workspaces/mongodbspaces/data

在工作目录下创建MongoDB日志文件:D:/workspaces/mongodbspaces/logs/mongodb.log

在安装目录下创建config目录:C:/context/mongodb/config

在配置目录下创建配置文件:C:/context/mongodb/config/config.conf

修改配置文件

systemLog:
    # 日志级别,0:包含“info”信息,1~5,即大于0的值均会包含debug信息。类型: integer,默认: 0
    verbosity: 0
    # 发送所有的诊断信息日志文件的路径。systemLog.destination为file时有效。类型: string。
    path: D:/workspaces/mongodbspaces/logs/mongodb.log
    # 如果是true,则mongod服务重启时会将日志追加到日志末尾,否则每次重启会备份已有的日志并创建新日志。
    # 类型: boolean。默认: false。
    logAppend: true
    # 日志输出目的地,可以指定为“file”或者“syslog”,如果指定“file”则必须要设置systemLog.path。
    # 如果不指定,则会输出到标准输出中(standard output)。
    destination: file
processManagement:
    # Windows特有配置选项
    windowsService:
        # mongos/mongod作为Windows服务时的服务名称,在net start <name>和net stop <name>时使用。
        # 类型: string。默认: MongoDB
        # 必须与--install 安装服务或者--remove删除服务结合使用。
        serviceName: MongoDB
        # 在服务管理应用程序中MongoDB服务应用程序的名称。默认: MongoDB
        displayName: MongoDB
        # 设置MongoDB服务的描述,默认为MongoDB Server,在--install安装服务时使用。
        description: MongoDB Server
net:
    # mongod/mongos服务侦听客户端连接的端口。类型: int。默认: 27017。
    port: 27017
    # mongod/monogs应用侦听客户端的IP地址或者完整UNIX域套接字路径,如果想要绑定多个地址使用逗号分隔。
    # 若要绑定到所有IPv4地址,请输入0.0.0.0。与net.bindIpAll配置互斥,不能同时配置两个。
    # 类型: string。默认: localhost
    bindIp: 0.0.0.0
security:
    # 打开访问数据库和进行操作的用户角色认证,仅mongod有效。disabled: 关闭; enabled: 开启(默认开启)
    authorization: enabled
    # 启用或禁用服务器端JavaScript执行,仅mongod有效。
    # 如果为false,那么任何与javascript相关的功能都不能使用。类型: boolean。默认: true
    javascriptEnabled: true
setParameter:
    # 如果开启,则允许本机(localhost/127.0.0.1)第一次访问时不需要密码认证,以便于创建第一个admin数据库的用户
    # true/1或者false/0,默认为true。mongods和mongod有效,建议mongod关闭该功能。
    enableLocalhostAuthBypass: true
    # 认证机制,可选值为“SCRAM-SHA-1”、“MONGODB-CR”、“PLAN”等,建议为“SCRAM-SHA-1”
    authenticationMechanisms: SCRAM-SHA-1
storage:
    # mongod实例存储数据库文件路径,仅mongod有效。类型: string
    dbPath: D:/workspaces/mongodbspaces/data
    journal:
        # 是否开启journal日志持久存储,journal日志用来数据恢复,
        # 是mongod最基础的特性,通常用于故障恢复,仅mongod有效。
        # 类型: boolean。64bit默认为true,32bit默认为false
        enabled: true
    # 是否将不同DB的数据存储在不同的目录中,dbPath的子目录,目录名为db的名称,仅mongod有效。
    # 类型: boolean。默认: false
    directoryPerDB: true
    # mongod存储引擎类型,仅mongod有效,可选mmapv1、wiredTiger、inMemory(企业版专用)。3.2之后默认: wiredTiger
    engine: wiredTiger
    wiredTiger:
        engineConfig:
            # wiredTiger缓存工作集(working set)数据的内存的最大大小。mmapv1引擎没有改配置,会占用系统所有内存。
            # 这个值需要合理的规划,如果过小会影响MongoDB读写性能,如果过大则会大量使用swap甚至进程会被内存管理器kill。
            # 单位:GB,默认值最小256M,如果内存大于512M则默认50%。官方推荐不要将值设置为大于默认值。仅mongod有效
            cacheSizeGB: 1
            # 是否将集合数据和索引数据分两个目录存储,默认: false。仅mongod有效
            directoryForIndexes: true

配置mongodb环境变量这里就不赘述了。我们执行命令将MongoDB安装成服务:

mongod.exe --config C:/context/mongodb/config/config.conf --install

如果需要删除MongoDB服务,则需要执行命令:

mongod.exe --config C:/context/mongodb/config/config.conf --remove

如果需要重新安装MongoDB(先卸载再安装),则需要执行:

mongod.exe --config C:/context/mongodb/config/config.conf --reinstall

需要注意的是,这里的--config选项的值必须是绝对路径,也可以使用-f参数后面跟配置文件路径,这些操作都必须是在管理员CMD命令窗口里面完成。至此MongoDB的安装已经完成,我们需要先启动MongoDB服务,然后创建admin数据库下的管理员账号和密码:

C:\Users\Administrator> mongo
...
> use admin
...
> db.createUser({user: "root", pwd: "root", roles: [{role: "root", db: "admin"}]})
...

需要注意的是,由于我们第一次启动之前就已经打开了角色认证功能: security.authorization: enabled,但是初始是没有用户和密码的。MongoDB中 setParameter.enableLocalhostAuthBypass: true  这个配置是默认开启的,使用localhost/127.0.0.1第一次登录的时候可以免去角色认证,但是也仅有一次机会。

四、Linux下的MongoDB单节点安装

我们将下载完的包解压:

[root@abc] tar -zxvf mongodb-linux-x86_64-rhel70-3.6.4.tgz -C /usr/local/
[root@abc] mv /usr/local/mongodb-linux-x86_64-rhel70-3.6.4 /usr/local/mongodb

在工作目录下创建MongoDB数据存放目录:

[root@abc] mkdir /data/mongodb/data -p

在工作目录下创建MongoDB日志文件:

[root@abc] mkdir /data/mongodb/logs/ -p
[root@abc] touch /data/mongodb/logs/mongodb.log

在安装目录下创建config配置文件,并编辑配置文件:

[root@abc] mkdir /usr/local/mongodb/config -p
[root@abc] vim /usr/local/mongodb/config/config.conf
systemLog:
    # 日志级别,0:包含“info”信息,1~5,即大于0的值均会包含debug信息。类型: integer,默认: 0
    verbosity: 0
    # 发送所有的诊断信息日志文件的路径。systemLog.destination为file时有效。类型: string。
    path: /data/mongodb/logs/mongodb.log
    # 如果是true,则mongod服务重启时会将日志追加到日志末尾,否则每次重启会备份已有的日志并创建新日志。
    # 类型: boolean。默认: false。
    logAppend: true
    # 日志输出目的地,可以指定为“file”或者“syslog”,如果指定“file”则必须要设置systemLog.path。
    # 如果不指定,则会输出到标准输出中(standard output)。
    destination: file
processManagement:
    # 是否以守护进程(后台进程)的方式运行mongod/mongos进程。类型: boolean。默认: false。
    fork: true
    # 配合"fork:true"参数,将mongod/mongos进程ID写入指定的文件,如果不指定,将不会创建PID文件。类型: string
    pidFilePath: /data/mongodb/logs/mongodb.pid
net:
    # mongod/mongos服务侦听客户端连接的端口。类型: int。默认: 27017。
    port: 27017
    # mongod/monogs应用侦听客户端的IP地址或者完整UNIX域套接字路径,如果想要绑定多个地址使用逗号分隔。
    # 若要绑定到所有IPv4地址,请输入0.0.0.0。与net.bindIpAll配置互斥,不能同时配置两个。
    # 类型: string。默认: localhost
    bindIp: 0.0.0.0
security:
    # 打开访问数据库和进行操作的用户角色认证,仅mongod有效。disabled: 关闭; enabled: 开启(默认开启)
    authorization: enabled
setParameter:
    # 如果开启,则允许本机(localhost/127.0.0.1)第一次访问时不需要密码认证,以便于创建第一个admin数据库的用户
    # true/1或者false/0,默认为true。mongods和mongod有效,建议mongod关闭该功能。
    enableLocalhostAuthB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值