文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MongoDB学习笔记:副本集

2019-12-08 07:24

关注

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
    
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯