MongoDB学习笔记:副本集[通俗易懂]

MongoDB学习笔记:副本集[通俗易懂]本文更新于2022-01-08,使用MongoDB 4.4.5。 单台服务器下创建副本集 确保/data/db目录存在且当前系统用户有读写权限。例如(需根据实际情况设置权限): su root mkd

MongoDB学习笔记:副本集

本文更新于2022-01-08,使用MongoDB 4.4.5。

目录
  • 单台服务器下创建副本集
  • 多台服务器下创建副本集
    • 重新启动并连接到副本集
  • 维护副本集节点

单台服务器下创建副本集

  1. 确保/data/db目录存在且当前系统用户有读写权限。例如(需根据实际情况设置权限):

    su root
    mkdir -p /data/db
    chmod 0777 /data /data/db
    
  2. 启动shell但不连接到任何mongod。

    mongo --nodb
    
  3. 创建副本集(笔者的副本集有3个节点,名字为repl)。

    var replset = new ReplSetTest({nodes: 3, name: "repl"});
    
  4. 启动副本集。会先删除原有数据库目录,再创建数据库目录和文件,启动所有副本集进程,同时会不断输出所有节点的日志。

    replset.startSet();
    

    返回值值的各个元素包含节点的地址(笔者是localhost::20000、localhost::20001、localhost::20002)。

  5. 初始化副本集。会从备份节点中选举出主节点。

    replset.initiate();
    
  6. 启动shell连接到副本集的节点(笔者使用localhost::20000),可执行查询操作。

    mongo mongodb://localhost:20000
    

    shell提示是“repl:PRIMARY”或“repl:SECONDARY”,前面是副本集名字,后面表示主节点或备份节点。

  7. 在第一个shell中停止副本集。会停止所有副本集进程。

    replset.stopSet();
    

多台服务器下创建副本集

此种方法也可在单台服务器下创建副本集(笔者就以此方式使用)。

  1. 确保数据目录(笔者的副本集有3个节点,使用/data/db/rs0、/data/db/rs1、/data/db/rs2)存在且当前系统用户有读写权限。例如(需根据实际情况设置权限):

    su root
    mkdir -p /data/db/rs0
    mkdir -p /data/db/rs1
    mkdir -p /data/db/rs2
    chmod 0777 /data /data/db /data/db/rs0 /data/db/rs1 /data/db/rs2
    
  2. 使用不同的shell启动副本集节点(笔者的副本集名字为replica),如果在单台服务器下需指定不同的数据目录(如笔者在上一步所述)和端口(笔者使用30000、30001、30002)。会创建数据库文件。

    mongod --replSet replica --dbpath /data/db/rs0 --port 30000
    mongod --replSet replica --dbpath /data/db/rs1 --port 30001
    mongod --replSet replica --dbpath /data/db/rs2 --port 30002
    
  3. 启动shell连接到任意一个节点(笔者使用端口30000的节点)。

    mongo mongodb://localhost:30000
    
  4. 初始化副本集,会从备份节点中选举出主节点(笔者的副本集名字为replica,各节点为localhost:30000、localhost:30001、localhost:30002)。如果副本集曾经初始化,则不用执行此步骤。

    rs.initiate({
    	_id: "replica",
    	members: [
    		{
    			"_id": 0,
    			"host": "localhost:30000"
    		},
    		{
    			"_id": 1,
    			"host": "localhost:30001"
    		},
    		{
    			"_id": 2,
    			"host": "localhost:30002"
    		}
    	]
    });
    
  5. 启动shell连接到副本集(笔者的副本集名字为replica,各节点为localhost:30000、localhost:30001、localhost:30002),可执行查询操作。

    mongo mongodb://localhost:30000,localhost:30001,localhost:30002/?replicaSet=replica
    
  6. 也可以启动shell连接到任意节点(笔者使用localhost:30000)。

    mongo mongodb://localhost:30000
    

重新启动并连接到副本集

对于使用上述方式创建的副本集,如需重新启动并连接到副本集,只需启动不同的shell执行其中若干个步骤,如下:

mongod --replSet replica --dbpath /data/db/rs0 --port 30000
mongod --replSet replica --dbpath /data/db/rs1 --port 30001
mongod --replSet replica --dbpath /data/db/rs2 --port 30002
mongo mongodb://localhost:30000,localhost:30001,localhost:30002/?replicaSet=replica

维护副本集节点

  1. 将待维护节点的mongod服务停止。

  2. 以单机模式启动节点(笔者使用上例中的localhost:30000,并将端口修改为10000)。

    mongod --dbpath /data/db/rs0 --port 10000
    
  3. 启动shell连接到此节点(如上所述,笔者使用localhost:10000),进行维护。

    mongo mongodb://localhost:10000
    
  4. 维护完成后,使用原来的副本集参数启动此节点(如上所述,笔者使用原来的副本集名字replica和原来的端口30000)。

    mongod --replSet replica --dbpath /data/db/rs0 --port 30000
    

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5523.html

(0)
上一篇 2023-05-05 19:30
下一篇 2023-05-06

相关推荐

  • 在Jupyter中使用Python

    在Jupyter中使用Python
    Jupyter是一个优秀的交互式计算平台,有助于数据分析、可视化以及科学计算。它通过web界面提供了一种简单易用的方式来使用R、Python和其他语言执行代码,并且可以轻易地创建和共享文档、演示文稿和数据分析报告。本文将向您介绍如何在Jupyter中使用Python,并使您熟悉一些基础操作和技巧。

    2024-05-24
    87
  • Python创建中心列表

    Python创建中心列表Python是一种简单、易学、功能强大的编程语言,它在数据处理、科学计算、Web开发等领域都有广泛的应用。在Python中,可以通过创建列表来存储一组有序的数据,这使得Python具有处理数据的优秀能力。

    2024-04-21
    72
  • 在pycharm中配置Python环境

    在pycharm中配置Python环境Python是一种高级的解释性编程语言,广泛应用于数据科学、Web开发等领域。为了在PyCharm中进行Python编程,需要首先配置Python环境,使其与IDE相适配。Python环境配置的好处是可以自定义Python版本,方便切换不同项目所需的Python版本。

    2024-06-25
    46
  • navicat调节字体大小_页面字体大小怎么调

    navicat调节字体大小_页面字体大小怎么调Navicat是一套快速、可靠和全面的数据库管理工具,专门用于简化数据库管理和降低管理成本。Navicat图形界面直观,提供简便的管理方法,设计和操作MySQL、MariaDB、SQL Server、

    2023-06-10
    145
  • Python中elif的用途和使用场景

    Python中elif的用途和使用场景在Python中,elif是一种条件语句,可以理解为“否则如果”的意思,用于在多个条件中进行选择执行。在if语句后面,我们可以使用若干个elif语句,最后可以选择使用一个else语句作为默认,来处理所有没有被if和elif语句覆盖的情况。

    2024-02-14
    103
  • 如何检查 Python 版本

    如何检查 Python 版本Python是一个广泛使用的编程语言,但是在不同的项目中使用不同的Python版本可能会导致代码执行出现问题。因此,检查当前Python版本非常重要,以便在项目中使用正确的Python版本。

    2024-08-20
    26
  • MySQL 操作数据库、数据表「建议收藏」

    MySQL 操作数据库、数据表「建议收藏」通过mysql-client连接到mysql-server,sql语句要以分号结尾,这样按Enter才会执行sql语句。 mysql关键字不区分大小写 字符串、时间日期类型的值要引起来 数据库操作 s

    2023-02-03
    151
  • redis基本操作 —— set[通俗易懂]

    redis基本操作 —— set[通俗易懂]一、向集合添加一个或多个成员 命令:sadd 格式:sadd key member1 [member2] 127.0.0.1:6379> sadd set_key m1 (integer) 1

    2023-03-07
    148

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注