• MongoDB的集群安装搭建配置


    1. MongoDB介绍

    1.1、MongoDB 简介

    MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。具有以下特点:

    • 面向集合文档型存储,易于存储对象类型的数据, 以键-值对形式存储,支持数组,支持文档之间嵌套。
    • 模式自由,无需知道存储数据的任何结构定义,支持动态查询。
    • 支持完全索引, 支持B+索引,全文索引,地理空间索引。
    • 支持复制和故障恢复, 可以通过配置复制集的方式实现节点间复制以及故障转移, 基于复制集的读写分离以分散IO,提高性能
    • 支持分片, 可以基于片键实现分片,即将数据集分散在不同的节点,支持分片自动均衡以及手动均衡。
    • 易伸缩,支持水平的数据库集群,可动态添加额外的服务器。

    1.2、Mongodb中基本的概念

    Mongodb中基本的概念是文档、集合、数据库:

    SQL术语/概念MongoDB术语/概念解释/说明
    databasedatabase数据库
    tablecollection数据库表/集合
    rowdocument数据记录行/文档
    columnfield数据字段/域
    indexindex索引
    table joins表连接,MongoDB不支持
    primary keyprimary key主键,MongoDB自动将_id字段设置为主键

    1.3、 MongoDB数据类型

    MongoDB中常用的几种数据类型:

    数据类型描述
    String字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
    Integer整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
    Boolean布尔值。用于存储布尔值(真/假)。
    Double双精度浮点值。用于存储浮点值。
    Min/Max keys将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
    Array用于将数组或列表或多个值存储为一个键。
    Timestamp时间戳。记录文档修改或添加的具体时间。
    Object用于内嵌文档。
    Null用于创建空值。
    Symbol符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
    Date日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
    Object ID对象 ID。用于创建文档的 ID。
    Binary Data二进制数据。用于存储二进制数据。
    Code代码类型。用于在文档中存储 JavaScript 代码。
    Regular expression正则表达式类型。用于存储正则表达式。

    1.4、 MongoDB使用场景

    MongoDB实际广泛使用的案例:

    • 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
    • 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
    • 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
    • 物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
    • 视频直播,使用 MongoDB 存储用户信息、礼物信息等

    实际项目当中如何选择?

    应用特征YES / NO
    应用不需要事务及复杂 join 支持必须 Yes
    新应用,需求会变,数据模型无法确定,想快速迭代开发
    应用需要2000-3000以上的读写QPS(更高也可以)
    应用需要TB甚至 PB 级别数据存储?
    应用发展迅速,需要能快速水平扩展?
    应用要求存储的数据不丢失?
    应用需要99.999%高可用?
    应用需要大量的地理位置查询、文本查询

    如果项目符合其中1个特征就可以考虑使用, 如果2个以上特征, 就可以完全确定采用MongoDB。

    2. MongoDB 单节点安装(Windows)
    1. 下载地址

      MongoDB服务端:

      MongoDB服务端

      MongoDB Compass 可视化管理工具:

      MongoDB Compass

    2. 单节点安装比较简单, 网上资料教程也比较多,就不在此赘述。

    3. 集群安装(Windows)

    需要在本机安装MongoDB集群, MongoDB的事务功能,只有在集群才能正常使用。

    1. 按照上面步骤, 确保单节点安装完成

    2. 集群安装目录与配置

      D:\TestCode\Mongo_ReplicSet

      创建三个文件夹
      在这里插入图片描述

      在每个目录下面创建一个data目录, 配置文件并将mongod.exe执行程序拷贝过来
      在这里插入图片描述

      三个目录依次创建, 并修改对应conf配置中的端口信息:

      port=27011
      bind_ip=127.0.0.1
      dbpath=./data 
      replSet=mongoReplic
      
      • 1
      • 2
      • 3
      • 4
    3. 启动三个节点

      D:\TestCode\Mongo_ReplicSet\27011\mongod.exe -f 27011.conf
      
      • 1
    4. 创建集群

      • 通过客户端连入主节点

        C:\Program Files\MongoDB\Server\4.2\bin\mongo.exe --port 27001

      • 执行初始化命令

        rs.initiate()

      • 添加另外两个节点

        rs.add(“127.0.0.1:27012”)

        rs.add(“127.0.0.1:27013”)

      • 查看集群状态

        rs.status()

        正常可以看到所有节点信息:

         "members" : [
                        {
                                "_id" : 0,
                                "name" : "127.0.0.1:27011",
                                "ip" : "127.0.0.1",
                                "health" : 1,
                                "state" : 1,
                                "stateStr" : "PRIMARY",
                                "uptime" : 586,
                                "optime" : {
                                        "ts" : Timestamp(1568107734, 1),
                                        "t" : NumberLong(1)
                                },
                                "optimeDate" : ISODate("2019-09-10T09:28:54Z"),
                                "syncingTo" : "",
                                "syncSourceHost" : "",
                                "syncSourceId" : -1,
                                "infoMessage" : "",
                                "electionTime" : Timestamp(1568107282, 2),
                                "electionDate" : ISODate("2019-09-10T09:21:22Z"),
                                "configVersion" : 3,
                                "self" : true,
                                "lastHeartbeatMessage" : ""
                        },
                        {
                                "_id" : 1,
                                "name" : "127.0.0.1:27012",
                                "ip" : "127.0.0.1",
                                "health" : 1,
                                "state" : 2,
                                "stateStr" : "SECONDARY",
                                "uptime" : 351,
                                "optime" : {
                                        "ts" : Timestamp(1568107734, 1),
                                        "t" : NumberLong(1)
                                },
                                "optimeDurable" : {
                                        "ts" : Timestamp(1568107734, 1),
                                        "t" : NumberLong(1)
                                },
                                "optimeDate" : ISODate("2019-09-10T09:28:54Z"),
                                "optimeDurableDate" : ISODate("2019-09-10T09:28:54Z"),
                                "lastHeartbeat" : ISODate("2019-09-10T09:29:00.356Z"),
                                "lastHeartbeatRecv" : ISODate("2019-09-10T09:29:01.375Z"),
                                "pingMs" : NumberLong(0),
                                "lastHeartbeatMessage" : "",
                                "syncingTo" : "127.0.0.1:27013",
                                "syncSourceHost" : "127.0.0.1:27013",
                                "syncSourceId" : 2,
                                "infoMessage" : "",
                                "configVersion" : 3
                        },
                        {
                                "_id" : 2,
                                "name" : "127.0.0.1:27013",
                                "ip" : "127.0.0.1",
                                "health" : 1,
                                "state" : 2,
                                "stateStr" : "SECONDARY",
                                "uptime" : 347,
                                "optime" : {
                                        "ts" : Timestamp(1568107734, 1),
                                        "t" : NumberLong(1)
                                },
                                "optimeDurable" : {
                                        "ts" : Timestamp(1568107734, 1),
                                        "t" : NumberLong(1)
                                },
                                "optimeDate" : ISODate("2019-09-10T09:28:54Z"),
                                "optimeDurableDate" : ISODate("2019-09-10T09:28:54Z"),
                                "lastHeartbeat" : ISODate("2019-09-10T09:29:00.356Z"),
                                "lastHeartbeatRecv" : ISODate("2019-09-10T09:29:00.879Z"),
                                "pingMs" : NumberLong(0),
                                "lastHeartbeatMessage" : "",
                                "syncingTo" : "127.0.0.1:27011",
                                "syncSourceHost" : "127.0.0.1:27011",
                                "syncSourceId" : 0,
                                "infoMessage" : "",
                                "configVersion" : 3
                        }
                ],
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
        • 30
        • 31
        • 32
        • 33
        • 34
        • 35
        • 36
        • 37
        • 38
        • 39
        • 40
        • 41
        • 42
        • 43
        • 44
        • 45
        • 46
        • 47
        • 48
        • 49
        • 50
        • 51
        • 52
        • 53
        • 54
        • 55
        • 56
        • 57
        • 58
        • 59
        • 60
        • 61
        • 62
        • 63
        • 64
        • 65
        • 66
        • 67
        • 68
        • 69
        • 70
        • 71
        • 72
        • 73
        • 74
        • 75
        • 76
        • 77
        • 78
        • 79
        • 80
        • 81

    3.3 可视化管理工具(Compass)

    安装MongoDB官方提供的可视化管理工具Compass,能够更为直观的管理与操作MongoDB。

    • 下载
      MongoDB Compass 下载

    • 连接配置
      在这里插入图片描述

      单节点配置主机地址和端口名称,集群需要配置主节点的地址、端口和Replica Set Name集群名称。

    • 管理界面

      连接配置成功之后, 可以看到主机相关信息。

      在这里插入图片描述

  • 相关阅读:
    关于GPIO你真的懂了吗?这篇文章都给你整理好了
    知识库网站如何搭建?需要注意这五个要点!
    3.2 Android eBPF程序类型
    识别准确率竟如此高,实时语音识别服务
    舵机云台实现体感姿态跟随功能
    夯实基础上篇-图解 JavaScript 执行机制
    如何用架构的思维为云原生做减法?
    本地项目如何设置https——2024-04-19
    springboot Actuator整合prometheus并使用grafana可视化(prometheus,grafana使用docker搭建)
    VueRouter与expres/koa中间件的关联
  • 原文地址:https://blog.csdn.net/hxx688/article/details/126448472