mongodb linux下集群搭建过程

为了更清晰地描述“mongodb linux下集群搭建过程”的完整攻略,我将按照以下格式来回复你的问题。

1. 环境准备

在开始搭建集群之前,需要先准备好以下的环境:

  • 3台或3台以上linux服务器。这里以CentOS7为例,版本为7.9。
  • 在每台服务器上都安装好MongoDB。

2. 集群搭建步骤

2.1 配置主节点

第一步是配置主节点。你需要在其中一台服务器上创建一个MongoDB配置文件 mongod.conf,并添加以下内容:

systemLog:
   destination: file
   path: "/var/log/mongodb/mongod.log"
   logAppend: true
processManagement:
   fork: true
net:
   bindIp: 主节点ip地址
   port: 主节点端口号
replication:
   replSetName: rs0

请注意,mongod.conf 文件是一个YAML格式的文件,所以你需要缩进。这个配置文件会帮助你配置MongoDB的主节点,并告诉它监听哪个IP地址和端口号,以及它的复制集名称是什么。

2.2 启动MongoDB主节点

第二步是启动MongoDB主节点。使用以下命令来启动它:

mongod --config /etc/mongod.conf

2.3 初始化副本集

第三步是初始化副本集。在主节点上,使用以下命令:

mongo

接着进入 MongoDB Shell,输入以下命令:

rs.initiate()

这条命令将启动MongoDB的初始化副本集过程,你应该会看到如下输出:

{
        "info2" : "no configuration explicitly specified -- making one",
        "me" : "localhost:27017",
        "ok" : 1
}

然后,你需要在这个 Shell 提示符下,将当前的节点添加到副本集中:

rs.add("第二台服务器的ip地址:端口号")

例如,如果你的第二台服务器的IP地址是192.168.0.2,端口号是27017,则应该添加:

rs.add("192.168.0.2:27017")

接着,在Shell下输入rs.status(),你将可以看到你的副本集现在应该是由两个节点组成了。

2.4 配置和启动副节点

第四步是在两个次要节点 (副本节点) 上配置 MongoDB。配置MongoDB的 mongod.conf 文件,就像你在第一步中配置主节点一样。主要区别是将其配置为作为普通节点加入到复制集中,而不是作为主节点。

确保在任何一个次要节点上启动 mongod 进程之前修改其配置文件,以便 replSetName 属性与主节点匹配。然后在每个次要节点上启动 mongod 进程。

2.5 重新初始化主节点

现在,我们需要重新初始化主节点以知道副节点的加入。我们可以在任何一个MongoDB Shell会话中进行,使用以下命令:

rs.reconfig()

这条命令将重新配置主节点,并将新的副节点添加到它的复制集中。

2.6 成功测试集群

执行以下命令:

mongo

在 Mongo Shell 提示符下,输入以下命令,它将打印出集群中所有成员的状态:

rs.status()

此时,你应该会看到输出,类似于:

{
    "set" : "rs0",
    "date" : ISODate("2021-10-22T01:18:28.264Z"),
    "myState" : 1,
    "term" : NumberLong(1),
    "syncSourceHost" : null,
    "syncSourceId" : -1,
    "heartbeatIntervalMillis" : NumberLong(2000),
    "majorityVoteCount" : 2,
    "writeMajorityCount" : 2,
    "votingMembersCount" : 2,
    "writableVotingMembersCount" : 2,
    "optimes" : {
        "lastCommittedOpTime" : {
            "ts" : Timestamp(1634895500, 1),
            "t" : NumberLong(1)
        },
        "lastCommittedWallTime" : ISODate("2021-10-22T01:11:40.076Z"),
        "readConcernMajorityOpTime" : {
            "ts" : Timestamp(1634895500, 1),
            "t" : NumberLong(1)
        },
        "readConcernMajorityWallTime" : ISODate("2021-10-22T01:11:40.076Z"),
        "appliedOpTime" : {
            "ts" : Timestamp(1634895500, 1),
            "t" : NumberLong(1)
        },
        "durableOpTime" : {
            "ts" : Timestamp(1634895500, 1),
            "t" : NumberLong(1)
        },
        "lastAppliedWallTime" : ISODate("2021-10-22T01:11:40.076Z"),
        "lastDurableWallTime" : ISODate("2021-10-22T01:11:40.076Z")
    },
    "members" : [
        {
            "_id" : 0,
            "name" : "localhost:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 2997,
            "optime" : {
                "ts" : Timestamp(1634895500, 1),
                "t" : NumberLong(1)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1634895500, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2021-10-22T01:11:40Z"),
            "optimeDurableDate" : ISODate("2021-10-22T01:11:40Z"),
            "lastHeartbeat" : ISODate("2021-10-22T01:18:27.145Z"),
            "lastHeartbeatRecv" : ISODate("2021-10-22T01:18:27.645Z"),
            "pingMs" : NumberLong(0),
            "lastHeartbeatMessage" : "",
            "syncingTo" : "",
            "configVersion" : 1
        },
        {
            "_id" : 1,
            "name" : "192.168.0.2:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 665,
            "optime" : {
                "ts" : Timestamp(1634895500, 1),
                "t" : NumberLong(1)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1634895500, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2021-10-22T01:11:40Z"),
            "optimeDurableDate" : ISODate("2021-10-22T01:11:40Z"),
            "lastHeartbeat" : ISODate("2021-10-22T01:18:26.199Z"),
            "lastHeartbeatRecv" : ISODate("2021-10-22T01:18:27.948Z"),
            "pingMs" : NumberLong(1),
            "syncingTo" : "localhost:27017",
            "configVersion" : 1
        }
    ],
    "ok" : 1,
    "operationTime" : Timestamp(1634895500, 1),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1634895500, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}

你现在已经成功地设置了MongoDB的3节点集群!

示例说明

示例一:主节点数据遗失后恢复

如果主节点宕机或数据遗失,则需要重置整个 MongoDB 集群。这个过程看起来就像第一次启动集群。

但是,由于你的副本集初始已经有了一个主节点,因此你应该通过rs.freeze(600)命令冻结集群,在几分钟内停止副本集中的所有读写操作。然后,你需要选择一台新机器来运行“主节点,重置它并加入到集群中。最后,使用新主节点恢复集群。

示例二:增加节点

要增加新的节点,请在要添加到集群的新节点上配置 Mongod 后,打开 MongoDB Shell 并切换到管理员模式。然后,使用 rs.add() 命令将新的节点加入副本集:

rs.add("第三台服务器的ip地址:端口号")

这样,你就成功地将第三个节点加入了集群。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mongodb linux下集群搭建过程 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • MongoDB CRUD操作中的插入实例教程

    下面是MongoDB CRUD操作中的插入实例教程的完整攻略: 1. 确定插入的数据库和集合 在进行MongoDB数据插入前,需要确定需要插入的数据所在的数据库和集合。假设需要插入的数据库为test,需要插入的集合为students。 # 数据库 test ## 集合 students 2. 插入多条数据 MongoDB的插入操作支持同时插入多条数据,下面是…

    MongoDB 2023年5月16日
    00
  • Mongodb实战之全文搜索功能

    首先我们来讲解一下“Mongodb实战之全文搜索功能”的完整攻略。 简介 全文搜索能够让用户在硬盘或者数据库中搜索特定的单词、短语和句子。在Web开发中,全文搜索是网站中普遍使用的功能,Mongodb是一个非常流行的文档数据库,也支持全文搜索。 实现步骤 要实现全文搜索功能,我们需要以下几个步骤: 1. 创建索引 在Mongodb中,我们需要先在collec…

    MongoDB 2023年5月16日
    00
  • MongoDB正则表达式使用方法全攻略

    MongoDB正则表达式概述 正则表达式是用来匹配字符串的一种方式。在 MongoDB 中,正则表达式可以用来做字符串的匹配查询。 在 MongoDB 中,正则表达式的语法跟 Javascript 中的正则表达式语法基本相同,它们都是采用斜杠(/)包围正则表达式模式,并用可选的标记来修饰模式。 下面是 MongoDB 正则表达式的语法: /pattern/m…

    MongoDB 2023年3月14日
    00
  • MongoDB中4种日志的详细介绍

    MongoDB是一种非关系型数据库,主要通过一个稳定的日志系统来保证数据的完整性和可靠性。MongoDB中包含4种类型的日志,分别是:操作日志、慢查询日志、系统事件日志和修复日志。 操作日志 操作日志主要记录了MongoDB中执行的所有操作,如插入、更新、删除等。操作日志的作用是记录所有对数据库的修改,以便于后续对数据做出追踪与监控。 操作日志的开启需要设置…

    MongoDB 2023年5月16日
    00
  • 关于MongoDB谨防索引seek的效率问题详析

    关于MongoDB谨防索引seek的效率问题,我来给大家详细讲解一下。 什么是MongoDB索引 索引是MongoDB中用来提高查询效率的一种机制。MongoDB索引使用B树数据结构实现,可以在查找时加速数据的查找速度。在MongoDB中,可以使用命令db.collection.createIndex()来创建索引。 索引seek的效率问题 在使用Mongo…

    MongoDB 2023年5月16日
    00
  • MongoDB 事务支持详解

    MongoDB 事务支持详解 MongoDB 4.0版本开始支持了多文档事务,这是MongoDB一个重要的里程碑,意味着Mongodb可以用来存储具有ACID特性的关系型数据了。 事务的基本概念 事务是指一组数据库操作,它们被视为一个工作单元,要么全部执行成功,要么全部失败执行回滚。MongoDB中的事务遵循的是“all-or-nothing”的原则。 一个…

    MongoDB 2023年5月16日
    00
  • 将MongoDB作为Redis式的内存数据库的使用方法

    将MongoDB作为Redis式的内存数据库可以通过使用MongoDB的TTL(Time to Live)和内存映射来实现。以下是详细的攻略。 步骤一:安装MongoDB 在此之前,需要确保MongoDB已经被安装在本地计算机上。如果没有安装MongoDB,则可以前往MongoDB的官网下载安装包并进行安装。 步骤二:创建MongoDB集合 可以通过以下命令…

    MongoDB 2023年5月16日
    00
  • MongoDB实现查询、分页和排序操作以及游标的使用

    当我们使用MongoDB作为我们的数据库时,在进行操作时常常需要进行查询、分页和排序操作,并且在涉及大量数据的情况下,我们还需要使用游标来操作数据。下面,我将详细讲解MongoDB实现查询、分页和排序操作以及游标的使用的完整攻略。 查询操作 MongoDB使用db.collection.find()方法来执行查询操作。这个方法可以接受一系列的选项,以匹配需要…

    MongoDB 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部