如何在Windows上安装和运行MongoDB

Windows 环境下 MongoDB 的安装与运行详尽指南

1. 引言

随着大数据时代的到来,NoSQL 数据库以其灵活的数据模型、高可扩展性和高性能等特点,受到了越来越多开发者和企业的青睐。MongoDB 作为 NoSQL 数据库中的佼佼者,以其文档型数据库的特性、易用性和强大的查询功能,在众多应用场景中发挥着重要作用。

本文档旨在为需要在 Windows 操作系统环境下安装和运行 MongoDB 的用户提供一份详尽的操作指南。将详细阐述安装前的准备工作、安装过程的各个步骤、安装后的配置与验证,以及 MongoDB 基本的运行和管理操作。力求通过清晰的步骤和图文并茂的说明,帮助读者快速掌握在 Windows 环境下部署和使用 MongoDB 的技能。

2. 安装前的准备

在正式开始安装 MongoDB 之前,需要进行一些准备工作,以确保安装过程的顺利进行,并为后续的使用奠定基础。

2.1. 系统要求确认

首先需要确认当前的 Windows 系统环境是否满足 MongoDB 的运行要求。MongoDB 支持多种 Windows 版本,建议使用较新的 64 位操作系统,如 Windows Server 2019、Windows Server 2016、Windows 10 或 Windows 11。

  • 操作系统版本: 64 位 Windows 操作系统是首选。虽然 MongoDB 曾经支持 32 位系统,但为了获得更好的性能和更大的数据处理能力,强烈建议使用 64 位系统。
  • 硬件资源: MongoDB 对硬件资源有一定的要求,特别是内存。建议至少拥有 4GB 的 RAM,对于生产环境,8GB 或更高的 RAM 是更合适的选择。足够的磁盘空间也是必要的,具体大小取决于预计存储的数据量。
  • 文件系统: 建议使用 NTFS 文件系统。

2.2. 下载 MongoDB 安装包

访问 MongoDB 官方网站的下载中心 (https://www.mongodb.com/try/download/community)。下载中心提供了不同版本的 MongoDB 安装包,包括社区版 (Community Server) 和企业版 (Enterprise Server)。

  • 版本选择: 对于初学者和一般应用场景,建议选择社区版 (Community Server)。社区版是免费且开源的,功能足以满足大多数需求。
  • 安装包类型:
    选择与操作系统对应的安装包。通常情况下,选择 MSI 安装包。MSI 安装包提供了图形化安装界面,简化了安装过程。
  • 版本号: MongoDB 的版本号遵循“主版本号.次版本号.修订号”的格式,例如 4.4.6。建议选择最新的稳定版本,以获得最新的功能和安全补丁。

2.3. 确定安装路径

在安装过程中,需要指定 MongoDB 的安装路径和数据文件存储路径。

  • 安装路径: 默认情况下,MongoDB 会安装到 C:\Program Files\MongoDB\Server\{版本号}\ 目录下。也可以选择自定义的安装路径,但建议路径中不要包含中文或特殊字符。
  • 数据文件存储路径: 默认情况下,MongoDB 的数据文件存储在 C:\data\db 目录下。这个目录必须手动创建。强烈建议将数据文件存储在单独的磁盘分区或非系统盘,以提高性能和安全性。出于数据安全考虑,应该避免将数据存储于系统盘。
  • 日志文件存储路径: 默认情况下,MongoDB的日志文件存储在安装目录的log文件夹。为了方便日后排查问题,也可以自定义此路径。

3. MongoDB 安装步骤

准备工作完成后,可以开始正式安装 MongoDB。

3.1. 运行安装程序

找到下载的 MSI 安装包,双击运行。安装程序会启动一个图形化安装向导。

3.2. 接受许可协议

阅读并接受 MongoDB 的许可协议。

3.3. 选择安装类型

安装向导会提供两种安装类型:

  • Complete(完整安装): 安装所有 MongoDB 组件,包括服务器、客户端工具、管理工具等。建议初学者选择此选项。
  • Custom(自定义安装): 可以选择需要安装的组件。如果对 MongoDB 比较熟悉,可以根据需要选择自定义安装。

3.4. 服务配置 (Service Configuration)

在服务配置界面,可以配置 MongoDB 作为 Windows 服务运行的相关选项。

  • Install MongoDB as a Service(将 MongoDB 安装为服务): 建议勾选此选项。将 MongoDB 安装为服务可以使其在后台自动运行,并在系统启动时自动启动。
  • Run service as Network Service user(以 Network Service 用户身份运行服务): 这是默认选项,通常情况下不需要修改。
  • Run service as a local or domain user(以本地或域用户身份运行服务): 如果有特殊需求,可以指定一个特定的用户来运行 MongoDB 服务。
  • Service Name (服务名称): 默认是MongoDB, 可以选择一个自定义的服务名称。
  • Data Directory(数据目录): 指定 MongoDB 数据文件的存储路径。如前所述,强烈建议将其设置为一个非系统盘的目录。
  • Log Directory(日志目录): 指定 MongoDB 日志文件的存储路径。

3.5. 安装 MongoDB Compass (可选)

MongoDB Compass 是一个图形化的 MongoDB 管理工具,可以方便地查看和管理数据库、集合和文档。在安装过程中,可以选择是否安装 MongoDB Compass。

  • 建议初学者安装 MongoDB Compass,以便更直观地了解和操作 MongoDB。

3.6. 开始安装

确认所有配置选项后,点击“Install”按钮开始安装。安装过程可能需要几分钟时间。

3.7. 完成安装

安装完成后,点击“Finish”按钮退出安装向导。

4. 安装后配置与验证

安装完成后,还需要进行一些配置和验证,以确保 MongoDB 能够正常运行。

4.1. 配置环境变量

为了方便在命令行中直接运行 MongoDB 的命令,需要将 MongoDB 的 bin 目录添加到系统的环境变量中。

  1. 打开“控制面板” -> “系统和安全” -> “系统” -> “高级系统设置”。
  2. 点击“环境变量”按钮。
  3. 在“系统变量”列表中,找到名为 Path 的变量,双击编辑。
  4. 在变量值的末尾添加 MongoDB 的 bin 目录的路径,例如 C:\Program Files\MongoDB\Server\4.4\bin (根据实际安装路径修改)。多个路径之间用分号 (;) 分隔。
  5. 点击“确定”保存所有更改。

4.2. 启动 MongoDB 服务

如果在安装过程中选择了将 MongoDB 安装为服务,那么 MongoDB 服务应该已经在后台自动运行。可以通过以下方式验证:

  1. 打开“服务”管理器 (services.msc)。
  2. 在服务列表中找到名为 MongoDB (或自定义的服务名称) 的服务。
  3. 查看服务的状态是否为“正在运行”。

如果 MongoDB 服务没有自动启动,可以手动启动:

  1. 在“服务”管理器中,右键点击 MongoDB 服务。
  2. 选择“启动”。

也可以通过命令行启动 MongoDB 服务:

bash
net start MongoDB

停止服务
bash
net stop MongoDB

4.3. 连接 MongoDB

使用 MongoDB 的客户端工具 mongo 连接到 MongoDB 服务器。

  1. 打开命令提示符 (cmd) 或 PowerShell。
  2. 输入 mongo 命令并回车。

如果一切正常,mongo 会连接到默认的 MongoDB 服务器 (localhost:27017),并显示 MongoDB 的 shell 提示符。

可以在 shell 中执行一些基本的 MongoDB 命令来验证连接:

```javascript

show dbs // 显示所有数据库
use test // 切换到 test 数据库
db.testCollection.insertOne({ name: "test document" }) // 插入一个文档
db.testCollection.find() // 查询所有文档
```

4.4. 使用 MongoDB Compass (可选)

如果安装了 MongoDB Compass,可以使用它来连接和管理 MongoDB 服务器。

  1. 打开 MongoDB Compass。
  2. 在连接界面,输入 MongoDB 服务器的连接信息 (默认是 localhost:27017)。
  3. 点击“Connect”按钮。

连接成功后,可以在 Compass 中查看数据库、集合和文档,执行查询和管理操作。

5. MongoDB 基本运行与管理

掌握 MongoDB 的基本运行和管理操作对于日常使用至关重要。

5.1. 数据库操作

  • 创建数据库: MongoDB 不需要显式地创建数据库。当使用 use 命令切换到一个不存在的数据库时,MongoDB 会自动创建该数据库。
  • 查看数据库列表: 使用 show dbs 命令可以查看所有数据库的列表,以及它们的大小。
  • 删除数据库: 使用 db.dropDatabase() 命令可以删除当前所在的数据库。

5.2. 集合操作

  • 创建集合: 与数据库类似,MongoDB 不需要显式地创建集合。当向一个不存在的集合中插入文档时,MongoDB 会自动创建该集合。也可以使用db.createCollection("集合名")创建
  • 查看集合列表: 使用 show collections 命令可以查看当前数据库中所有集合的列表。
  • 删除集合: 使用 db.{集合名}.drop() 命令可以删除指定的集合。

5.3. 文档操作

  • 插入文档: 使用 db.{集合名}.insertOne()db.{集合名}.insertMany() 方法可以向集合中插入一个或多个文档。
  • 查询文档: 使用 db.{集合名}.find() 方法可以查询集合中的文档。可以使用各种查询条件来过滤结果。
  • 更新文档: 使用 db.{集合名}.updateOne()db.{集合名}.updateMany() 方法可以更新一个或多个文档。
  • 删除文档: 使用 db.{集合名}.deleteOne()db.{集合名}.deleteMany() 方法可以删除一个或多个文档。

5.4. 配置文件

MongoDB 的配置文件 (mongod.cfg) 包含了 MongoDB 服务器的各种配置选项。

  • 配置文件位置: 默认情况下,配置文件位于 MongoDB 安装目录下的 bin 目录中,文件名为 mongod.cfg
  • 配置选项: 配置文件中包含了许多配置选项,例如数据文件路径、日志文件路径、网络绑定地址、端口号、安全认证等。
  • 修改配置文件: 可以使用文本编辑器打开配置文件进行修改。修改配置文件后,需要重启 MongoDB 服务才能使更改生效。

5.5. 日志文件

MongoDB 的日志文件记录了 MongoDB 服务器的运行状态和各种事件。

  • 日志文件位置: 日志文件的位置在配置文件中指定,默认情况下位于 MongoDB 安装目录下的 log 目录中。
  • 日志级别: MongoDB 支持不同的日志级别,例如 debug、info、warn、error、fatal。可以在配置文件中设置日志级别。
  • 查看日志: 可以使用文本编辑器打开日志文件查看日志信息。

5.6 MongoDB 社区版和企业版的差异

MongoDB 提供了社区版 (Community Server) 和企业版 (Enterprise Server) 两种版本。虽然两种版本都提供了 MongoDB 的核心功能,但在一些高级特性和支持服务方面存在差异。

以下是对两者进行对比说明,并非采用表格形式:

  • 授权方式: 社区版采用 Server Side Public License (SSPL) 授权,是免费且开源的。企业版采用商业授权,需要购买许可证。
  • 功能特性: 社区版包含了 MongoDB 的核心功能,如文档数据库、复制集、分片集群、查询语言、索引等。企业版在社区版的基础上,增加了一些高级功能,如:
    • 内存存储引擎 (In-Memory Storage Engine): 提供更高的性能和更低的延迟。
    • 审计 (Auditing): 记录数据库的各种操作,用于安全审计和合规性。
    • LDAP 和 Kerberos 认证: 支持与企业级目录服务集成,实现统一的身份认证。
    • 数据加密 (Encryption at Rest): 对存储在磁盘上的数据进行加密,提高数据安全性。
    • MongoDB Compass (完整版): 企业版包含了 MongoDB Compass 的完整版,提供了更多的功能和可视化工具。
    • Ops Manager / Cloud Manager: 提供 MongoDB 集群的监控、管理和自动化部署工具。
  • 技术支持: 社区版用户可以通过社区论坛和文档获得帮助。企业版用户可以获得 MongoDB 官方的技术支持服务。
  • 适用场景:
    • 社区版适合于学习、开发、测试和小规模生产环境。
    • 企业版适合于对性能、安全性、可管理性和技术支持有更高要求的大型生产环境。

总结来说,社区版提供了 MongoDB 的基本功能,适用于大多数场景。企业版则在社区版的基础上增加了一些高级功能和企业级特性,并提供官方的技术支持,更适合于对数据库有更高要求的企业级应用。

6. 进阶配置

6.1. 复制集 (Replica Set)

复制集是 MongoDB 提供的一种高可用性解决方案。通过在多个服务器上维护相同的数据副本,复制集可以实现数据冗余、故障自动切换和读写分离。

  • 工作原理: 复制集由一个主节点 (Primary) 和多个从节点 (Secondary) 组成。主节点负责处理所有的写操作,从节点复制主节点的数据,并可以处理读操作。当主节点发生故障时,从节点会自动选举出一个新的主节点,保证服务的持续可用性。
  • 配置步骤:
    1. 准备多台服务器,并在每台服务器上安装 MongoDB。
    2. 修改每台服务器的配置文件 (mongod.cfg),设置 replication.replSetName 选项为相同的复制集名称。
    3. 启动每台服务器的 MongoDB 服务。
    4. 使用 mongo shell 连接到其中一台服务器。
    5. 使用 rs.initiate() 命令初始化复制集。
    6. 使用 rs.add() 命令将其他服务器添加到复制集中。

6.2. 分片集群 (Sharded Cluster)

分片集群是 MongoDB 提供的一种水平扩展解决方案。通过将数据分散存储在多个分片 (Shard) 上,分片集群可以突破单台服务器的存储和性能瓶颈,实现海量数据的存储和处理。

  • 工作原理: 分片集群由多个分片 (Shard)、配置服务器 (Config Server) 和路由进程 (mongos) 组成。每个分片存储一部分数据,配置服务器存储集群的元数据,路由进程负责将客户端的请求路由到正确的分片。
  • 配置步骤:
    1. 准备多台服务器,分别用于分片、配置服务器和路由进程。
    2. 在每台服务器上安装 MongoDB。
    3. 修改每台服务器的配置文件 (mongod.cfg),设置相应的角色和参数。
    4. 启动配置服务器的 MongoDB 服务。
    5. 启动每个分片的 MongoDB 服务,并指定配置服务器的地址。
    6. 启动路由进程的 MongoDB 服务,并指定配置服务器的地址。
    7. 使用 mongo shell 连接到路由进程。
    8. 使用 sh.addShard() 命令将分片添加到集群中。
    9. 使用 sh.enableSharding() 命令启用数据库的分片功能。
    10. 使用 sh.shardCollection() 命令对集合进行分片。

6.3 安全设置

  • 启用访问控制: 默认情况下,MongoDB 不启用访问控制,这意味着任何人都可以连接到数据库并执行任何操作。在生产环境中,强烈建议启用访问控制,以保护数据库的安全。
  • 在配置文件中(mongod.cfg)设置security.authorization: enabled
  • 重启MongoDB服务
  • 创建管理员用户
  • 配置防火墙: 配置 Windows 防火墙,只允许信任的 IP 地址访问 MongoDB 的端口 (默认是 27017)。
  • 使用 SSL/TLS 加密连接: 启用 SSL/TLS 加密可以保护 MongoDB 客户端和服务器之间的通信安全,防止数据被窃听或篡改。

7. 后续事项

本文档详细介绍了在 Windows 环境下安装和运行 MongoDB 的各个方面。从安装前的准备到安装后的配置与验证,再到 MongoDB 的基本运行和管理,以及进阶的复制集和分片集群配置。虽然本文档尽可能地提供了详尽的指导,但 MongoDB 是一个功能丰富且复杂的数据库系统,有很多高级特性和配置选项没有在本文档中详细介绍。

建议读者在掌握了本文档介绍的基础知识后,继续深入学习 MongoDB 的相关文档和教程,不断探索 MongoDB 的更多功能和最佳实践,以便更好地利用 MongoDB 来构建高性能、高可用性和可扩展的应用程序。

THE END