01、MongoDB -- 下载、安装、配置文件等配置 及 副本集配置

目录

  • [MongoDB -- 下载、安装、配置 及 副本集配置](#MongoDB -- 下载、安装、配置 及 副本集配置)
    • 启动命令
      • [启动 mongodb 的服务器(单机和副本集)](#启动 mongodb 的服务器(单机和副本集))
        • [启动单机模式的 mongodb 服务器](#启动单机模式的 mongodb 服务器)
        • [启动副本集的 3 个副本节点(mongodb 服务器)](#启动副本集的 3 个副本节点(mongodb 服务器))
      • [启动 mongodb 的客户端](#启动 mongodb 的客户端)
    • [MongoDB 下载](#MongoDB 下载)
    • [MongoDB 安装](#MongoDB 安装)
      • 1、解压
      • 2、配置环境变量
      • [3、创建 mongod.conf 配置文件](#3、创建 mongod.conf 配置文件)
      • [4、启动 MongoDB 服务器](#4、启动 MongoDB 服务器)
        • 方式1:命令启动
        • [方式2:将 MongoDB 注册成 Windows 服务器](#方式2:将 MongoDB 注册成 Windows 服务器)
    • [MongoDB 副本集节点介绍](#MongoDB 副本集节点介绍)
    • [MongoDB 副本集 配置](#MongoDB 副本集 配置)
      • 1、添加不同节点的配置文件
      • [2、启动 3 个副本节点(mongodb 服务器)](#2、启动 3 个副本节点(mongodb 服务器))
      • [3、启动 mongodb 的客户端](#3、启动 mongodb 的客户端)
      • [4、使用 mongodb 客户端定义副本集的信息](#4、使用 mongodb 客户端定义副本集的信息)
      • 5、初始化副本集
    • 查看副本集信息
      • [rs.conf() :查看副本集的配置](#rs.conf() :查看副本集的配置)
      • [db.isMaster() :查看当前连接是否为主节点](#db.isMaster() :查看当前连接是否为主节点)
      • [rs.status() :查看副本集的状态](#rs.status() :查看副本集的状态)
      • [rs.secondaryOk(true) :设置副节点可读取数据](#rs.secondaryOk(true) :设置副节点可读取数据)

MongoDB -- 下载、安装、配置 及 副本集配置

启动命令

启动 mongodb 服务器 和 客户端 总结:

启动 mongodb 的服务器(单机和副本集)

启动单机模式的 mongodb 服务器

打开命令行窗口,执行如下命令即可启动 MongoDB 服务器了

复制代码
mongod.exe --config "E:\install\mongodb\mongodb-4.2.25\mongod.conf"

就是只启动一个 mongodb 的服务器

启动副本集的 3 个副本节点(mongodb 服务器)

节点1:端口号:27017

复制代码
mongod.exe --config "E:\install\mongodb\mongodb-4.2.25\replic\mongod_1.conf"

节点2:端口号:27018

复制代码
mongod.exe --config "E:\install\mongodb\mongodb-4.2.25\replic\mongod_2.conf"

节点3:端口号:27019

复制代码
mongod.exe --config "E:\install\mongodb\mongodb-4.2.25\replic\mongod_3.conf"

启动成功,如图

启动 mongodb 的客户端

打开命令行窗口,输入命令:

复制代码
mongo

即可启动 mongodb 的客户端

启动成功,如图:

之所以只需要输入 mongo 就能启动 mongodb 的客户端,是因为我之前把 mongodb 的 bin 目录添加到 path 环境变量里面 。

MongoDB 下载

登录官网下载MongoDB的zip压缩包,并将压缩包解压到任意路径下。

点击产品,我这里选择社区版

我下载的版本是4.2.25,选择 zip 的压缩包进行下载。

MongoDB 安装

1、解压

把压缩包解压到这里,文件夹名字太长可以改短一点

解压后只有一个bin目录和一些授权文档

bin目录下包含了MongoDB数据库的两个重要命令:

mongod.exe(服务器端程序) 类似于redis.exe

mongo.exe(客户端程序)。 类似 redis-cli.exe

2、配置环境变量

建议将MongoDB安装目录下bin路径添加到系统PATH环境变量中。

方便操作系统能找到mongdb\bin目录下的命令

3、创建 mongod.conf 配置文件

复制代码
运行 mongod.exe(服务端)需要指定大量选项,比如数据存储路径、日志存储路径等,
最简单的方式就是在运行 mongod.exe 命令时直接指定这些选项。
例如执行如下命令:

    mongod.exe --dbpath=..\data

更好的方式是用 --config 选项来指定配置文件
(安装目录下有一个mongod.conf 配置文件 ,这个版本没有就自己创建一个),
通过配置文件可指定更多选项。
配置文件中所指定数据目录、日志目录,都需要由开发人员自行先创建。

因为这个版本的安装目录下没有 mongod.conf 配置文件 ,所以就自己创建一个。

创建 mongod.conf 配置文件

添加配置信息

根据自己创建的配置文件,创建文件夹

java 复制代码
# mongod.conf
# 配置与存储有关的信息
storage:
  dbPath: E:\install\mongodb\mongodb-4.2.25\data\db
  journal:
    enabled: true

# 指定与日志有关的信息,把日志输出到file文件夹
systemLog:
  destination: file
  quiet: true
  logAppend: false
  path: E:\install\mongodb\mongodb-4.2.25\logs\mongod.log
#配置与网络有关的信息, mongodb 默认端口 27017
net:
  port: 27017
  bindIp: 0.0.0.0

4、启动 MongoDB 服务器

方式1:命令启动

打开命令行窗口,执行如下命令即可启动 MongoDB 服务器了

复制代码
mongod.exe --config "E:\install\mongodb\mongodb-4.2.25\mongod.conf"

我在启动这个命令时遇到的问题:

命令行启动mongodb服务器的问题及解决方案 -- Unrecognized option: storage.journal

命令行启动 mongodb 服务器的问题及解决方案:Error parsing YAML config file: yaml-cpp: errorxxx: illegal map value

如图:启动成功

可以通过查看刚刚创建的 data 数据文件夹和 logs 日志文件夹是否有初始数据,我这里有出现,表明启动 mongodb 成功。

通过上面的命令,可以启动 mongodb 服务器,但是每次使用 mongodb 这个数据库的话,都需要打开命令行窗口,执行这个命令来启动,就比较麻烦。

如图:服务里面没有 mongodb 这个服务

方式2:将 MongoDB 注册成 Windows 服务器

为了方便,我们可以以管理员的身份来执行如下命令可将 MongoDB 注册成 Windows 服务器

复制代码
mongod.exe --config "E:\install\mongodb\mongodb-4.2.25\mongod.conf" --install

比上面的启动命令多了 --install

需要以管理员的身份来打开命令行窗口:

输入命令:

成功将 mongodb 注册成 Windows 服务器

直接启动,让它运行,就不用每次使用 mongodb 数据库时,都得用命令来启动 mongodb 服务器,直接让 mongodb 这个数据库在电脑开机后就运行。

MongoDB 副本集节点介绍

MongoDB 副本集中节点可分为三类:

主节点(Primary):接收所有的写请求,并将所有修改同步到所有副节点(Secondary)。

副节点(Secondary):与主节点保持相同的数据集。 当主节点宕机的时候,其中之一会被选为Primary节点。

仲裁节点(Arbiter):仲裁节点不保存数据,也不可能被选为Primary节点,它的作用就是负责选择主节点。仲裁节点对硬件资源要求很低,通常建议与主、副节点保存在不同机器上。

一个节点就是一个 mongodb 服务器

MongoDB 副本集 配置

接下来要演示在同一个电脑弄3个 mongodb 的副本节点。

如图,先把上面演示的注册成windows服务的那个mongodb的服务停掉

1、添加不同节点的配置文件

要在同一台机器上运行多个MongoDB服务,只要用不同的 mongod.conf 配置文件、将 MongoDB 配置为监听不同端口即可。

(如果要将它们都添加成Windows服务,那就要为它们指定不同的服务名和显示名)

副本集模式的配置文件应在后面添加如下配置(同一个副本集的所有节点应使用相同副本集名称):

这里设置的 rs 就是副本集的名称

复制代码
 replication:
    replSetName: rs

1、先弄一个副本集,如图,创建一个replic文件夹,专门用来保存副本集模式的配置文件

2、把 congod.conf 配置文件拷贝一份到 replic 这个文件夹里面,修改配置文件的名字和内容,让其作为一个副本节点

3、因为我现在要弄三个节点(一个主节点、一个副节点,一个仲裁节点)来演示,所以把配置文件拷贝成3份,内容修改。

如图:

1、把 mongod.conf 配置文件拷贝三份,放到这个 replic 文件夹里面

2、每个节点的 mongod.conf 配置文件,都修改对应的data数据存储文件夹和log日志存储文件夹并创建出来。

3、然后每个节点都设置不同的端口号

4、显式指定我们绑定的这个主机的ip地址

这样就成功搞出3个副本节点出来了,然后这三个副本几点属于一个副本集,这个副本集叫:rs

2、启动 3 个副本节点(mongodb 服务器)

每个节点启动的命令不同,需要指定各自节点对应的 mongod_x.conf 配置文件

启动 3 个副本节点,也就是启动 3 个 mongodb 服务器。

节点1:端口号:27017

复制代码
mongod.exe --config "E:\install\mongodb\mongodb-4.2.25\replic\mongod_1.conf"

节点2:端口号:27018

复制代码
mongod.exe --config "E:\install\mongodb\mongodb-4.2.25\replic\mongod_2.conf"

节点3:端口号:27019

复制代码
mongod.exe --config "E:\install\mongodb\mongodb-4.2.25\replic\mongod_3.conf"

启动节点成功,如图:

3、启动 mongodb 的客户端

打开命令行窗口,输入命令:

复制代码
mongo

即可启动 mongodb 的客户端

4、使用 mongodb 客户端定义副本集的信息

上面启动了mongodb 的客户端之后,接下来就来定义副本集的信息。

使用 MongoDB 客户端执行如下命令:

定义副本集的配置:

复制代码
rs_conf={ _id:"rs", 
  members:[
    {_id:0, host:'192.168.0.107:27017',priority:1}, 
    {_id:1, host:'192.168.0.107:27018',priority:2},   
    {_id:2, host:'192.168.0.107:27019',arbiterOnly:true}
  ] }

如图:

在 MongoDB 中,rs 对象代表了副本集(Replica Set),在这里可以理解为定义了一个配置对象,

rs_conf 定义的配置对象指定了副本集的名称为:rs;

且指定该副本集包含3个节点:它们位于同一个主机上(192.168.0.107),只不过在不同的端口监听;

其中位于27019端口的节点是仲裁节点,它负责选举主节点

5、初始化副本集

继续在 mongodb 客户端初始化副本集,命令如下:

复制代码
rs.initiate(rs_conf)

如图:{ "ok" : 1 } 则表示初始化成功

如图:secondary 表示当前启动的节点是副节点

再打开一个命令行窗口,启动 mongodb 客户端,同时指定一个节点端口号(mongodb 服务器)

输入命令:

复制代码
mongo --port 27018

启动 27018 这个节点的客户端,可以看出此时这个节点是主节点。

(就是这个【客户端】是来操作 27018 这个节点【服务器】的)

如图:

至于 27017 和 27018 这个两个节点,谁是主节点,谁是副节点,我们是决定不了的。

这个是由 27019 这个仲裁节点决定的。

至此,mongodb 的副本集配置成功

查看副本集信息

可执行如下命令来查看副本集的相关信息:

命令在 主节点 或 副节点 查询都可以

rs.conf() :查看副本集的配置。

rs.status() :查看副本集的状态,可看到副本集内谁是主节点,谁是副节点,谁是仲裁节点等详细信息。

db.isMaster() :查看当前连接是否为主节点。

如果客户端当前连接到是副节点,可执行如下命令:

rs.slaveOk(boolean) :该命令设置副节点上是否可查看数据。默认状态下,副节点不允许查看数据。

副节点不允许写数据,除非它变成主节点。现在已经变成了secondaryOk()。

rs.conf() :查看副本集的配置

db.isMaster() :查看当前连接是否为主节点

rs.status() :查看副本集的状态

可看到副本集内谁是主节点,谁是副节点,谁是仲裁节点等详细信息。

rs.secondaryOk(true) :设置副节点可读取数据

如果客户端当前连接到是副节点,可执行如下命令: rs.secondaryOk(boolean)

该命令设置副节点上是否可查看数据。

默认状态下,副节点不允许查看数据。

副节点不允许写数据,除非它变成主节点。

如图:在副节点的命令行窗口,输入这个命令。

输入 :

复制代码
rs.secondaryOk(true)

设置为true,表示让副节点可以查看读取数据

相关推荐
anghost15010 分钟前
基于单片机的智能声控窗帘
单片机·嵌入式硬件·mongodb
薛晓刚1 小时前
当MySQL的int不够用了
数据库
SelectDB技术团队1 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术
星空下的曙光2 小时前
mysql 命令语法操作篇 数据库约束有哪些 怎么使用
数据库·mysql
小楓12012 小时前
MySQL數據庫開發教學(一) 基本架構
数据库·后端·mysql
染落林间色2 小时前
达梦数据库-实时主备集群部署详解(附图文)手工搭建一主一备数据守护集群DW
数据库·sql
颜颜yan_2 小时前
企业级时序数据库选型指南:从传统架构向智能时序数据管理的转型之路
数据库·架构·时序数据库
lichenyang4532 小时前
管理项目服务器连接数据库
数据库·后端
沙振宇2 小时前
【数据库】通过‌phpMyAdmin‌管理Mysql数据
数据库·mysql
杨云龙UP3 小时前
CentOS Linux 7 (Core)上部署Oracle 11g、19C RAC详细图文教程
数据库·oracle