安装 MongoDB

简介

MongoDB 是一个开源、高性能、无模式(Schemalessopen in new window)的文档数据库,专为可扩展性,高性能和高可用性而设计,旨在简化开发和扩展。

MongoDB 是一个介于关系数据库和非关系数据库(NoSQL)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的产品。

MongoDB 支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。不需要预定义数据结构,可以在运行时、动态地改变数据结构。

MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引,支持地理空间数据,支持事务。

MongoDB 可以从单服务器部署扩展到大型、复杂的多数据中心架构。利用内存计算的优势,它能够提供高性能的数据读写操作。

MongoDB 的本地复制和自动故障转移功能可以使应用程序具有企业级的可靠性和操作灵活性。

MongoDB 提供了几乎所有常见编程语言的客户端驱动程序,包括 Java, Go, C, C++, C#, Nodejs, Python, Ruby, Rust 等等。(参考: MongoDB 官方驱动open in new window)

在开发中使用文档型的 MongoDB 数据库可以大大简化复杂度,具有以下突出优点:

  • 无需预定义对象/表结构(Collection)
  • 可运行时动态扩展对象/表结构(Collection)
  • 支持字段索引
  • 支持事务
  • 支持复制和分片集群
  • 支持关系查询,如联结查询
  • 具备 NoSQL 型数据库的高性能

安装

MongoDB 支持所有常见的操作系统,包括 Linux, MacOS, Windows,也支持 Docker 。

MongoDB 的安装过程十分简单,在 Windows 版本提供有 .exe 安装包,Linux、 MacOS 下课通过包管理器,也可以直接解压缩后直接启动运行。

配置和启动

采用安装程序或者包管理方式安装的,可通过 mongod 命令启动数据库服务进程。 采用解压缩安装方式的,执行安装目录下 bin 目录中 /mongod 命令。

典型的命令执行参数:

mongod --bind_ip localhost --port 27017 --logpath ../log/mongodb.log --dbpath ../my-mongo-data-dir

MongoDB 支持指定配置文件的方式启动。(更推荐这种方式)

mongod --config ../conf/mongodb.conf

配置单机版实例

processManagement:
   fork: true
net:
   bindIp: localhost
   port: 27017
storage:
   dbPath: /usr/local/mongodb/data
systemLog:
   destination: file
   path: "/usr/local/mongodb/mongodb-macos-x86_64-4.4.6/log/mongod.log"
   logAppend: true
storage:
   journal:
      enabled: true

security:
   authorization: enabled

注意!

单机版的 MongoDB 实例不支持事务!!

配置复制集支持事务

MongoDB 支持事务,包括分布式事务。 MongoDB 的事务可以跨多个操作、集合、数据库、文档和分片。

以下提供了配置单机版的复制集(replica set)模式的示例。 单机版的复制集虽然不提供数据备份能力,但适合于本机开发环境上建立支持事务的开发调试环境。

完整的多机冗余备份和故障转移的复制集配置请参考 官方文档《Replication》open in new window

配置步骤:

创建配置文件

processManagement:
   fork: true
net:
   bindIp: localhost
   port: 27017
systemLog:
   destination: file
   path: "/usr/local/mongodb/mongodb-macos-x86_64-4.4.6/log/mongod.log"
   logAppend: true
storage:
   dbPath: /usr/local/mongodb/data
   journal:
      enabled: true
replication:
   replSetName: rs0
security:
   authorization: enabled
   keyFile: /usr/local/mongodb/mongodb-macos-x86_64-4.4.6/conf/rs0.keys

创建 keyFile

keyFile 是复制集内成员之间(包括 Primary, Member)的认证口令文件。

keyFile 中可以是任意内容,长度为 6 - 1024 之间。

按照上一步的配置,相应地创建 keyFile /usr/local/mongodb/mongodb-macos-x86_64-4.4.6/conf/rs0.keys

echo -e "rukk9321nkhaf8932nmlkajlsdfa" > /usr/local/mongodb/mongodb-macos-x86_64-4.4.6/conf/rs0.keys

修改 keyFile 的权限

需要修改 keyFile 文件的只允许拥有者(Owner)可读,否则会启动数据库时会报告异常,输出日志,并中止启动。

chmod 400 /usr/local/mongodb/mongodb-macos-x86_64-4.4.6/conf/rs0.keys

执行成功后,执行命令 ls -l 查看文件的权限,只保留了拥有者(Owner) root 用户可读,如下:

% ls -l

-r--------  1 root  wheel   31  4 28 20:00 rs0.keys

启动数据库

mongod --config ../conf/mongodb.conf

初始化复制集

通过 MongoDB 控制台登录数据库,执行命令 rs.initiate() 初始化复制集。

mongo -u admin

MongoDB shell version v4.4.6
Enter password: 
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("446dc743-bfe4-45eb-b4d0-56bdf12dcc4e") }
MongoDB server version: 4.4.6
---
...
---

> rs.initiate()

执行成功后,复制集就已经就绪可以开始工作了。此时,可以通过命令 rs.conf() 查看复制集的配置,通过命令 rs.status() 查看复制集的状态。在此示例的单机版复制集集群中,本机就是集群的 Primary 节点,Member 节点数量为 0 。

注意!!!

默认情况下,启动运行的 MongoDB 数据库服务不需要进行客户端登录验证,这对于正式生产环境是不可接受的。 当用于生产环境或其它重要环境时,请务必通过参数 security.authorization 开启登录验证。

客户端连接 MongoDB

基本语法:

mongo --host localhost --port 27017

指定登录用户名 admin :

mongo --host localhost --port 27017 -u admin

更多参考《mongo命令》open in new window

关闭 MongoDB 服务器

首先,以管理员账号登录到 MongoDB 服务器(参考上一节)

然后,切换到 amdin 数据库,执行命令 db.shutdownServer()

> use admin
switched to db admin
> db.shutdownServer()
server should be down...

相关资源

官网:https://www.mongodb.comopen in new window

社区版下载:https://www.mongodb.com/try/download/communityopen in new window

官方文档:https://www.mongodb.com/docs/manualopen in new window

最近更新:
发布者: huanghaiquan
扫码咨询