博客
关于我
MongoDB整理笔记の增加节点
阅读量:795 次
发布时间:2023-02-09

本文共 1557 字,大约阅读时间需要 5 分钟。

MongoDB 复制集不仅 提供了高可用性,还提供了负载均衡的解决方案。在实际应用中,增减Replica Set 节点非常普遍。例如,当应用的读压力急剧增加时,现有的3台节点可能无法满足需求,此时需要增加节点来分担压力,从而达到压力均衡。

以下是两种常用的增加Replica Set节点的方法:

方法一:通过oplog 增加节点

这种方法操作简单,且不需要大量人工干预,但需要注意oplog是capped集合,采用循环方式处理日志。因此,使用oplog直接增加节点可能导致数据不一致的问题。为了解决这一问题,可以结合数据库快照和oplog的方式来增加节点。

步骤 1:配置并启动新节点,启用28013端口

首先需要为新节点配置必要的权限和端口。以下是详细的配置命令示例:

mkdir -p /data/data/r3echo "this is rs1 super secret key" > /data/key/r3chmod 600 /data/key/r3/Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r3 --fork --port 28013 --dbpath /data/data/r3 --logpath=/data/log/r3.log --logappend

步骤 2:将新节点添加到现有的Replica Set中

使用rs.add命令将新节点加入复制集:

rs1:PRIMARY> rs.add("localhost:28013")

步骤 3:验证节点状态

通过rs.status()命令可以查看节点的状态:

rs1:PRIMARY> rs.status()

状态初始化阶段可能会显示新节点的状态为“not reachable/healthy”,但一旦同步完成,状态应变为“HEALTHY”。

步骤 4:数据同步完成

同步完成后,可以通过检查节点状态来确认:

rs1:PRIMARY> rs.status()

此时,新节点的状态应显示为“SECONDARY”或“PRIMARY”,并且数据同步已完成。

方法二:通过数据库快照和oplog 增加节点

这种方法结合了数据库快照和oplog日志,能够无缝地进行节点扩展,避免了数据不一致的问题。

步骤 1:备份某一复制集成员的物理文件

使用scp命令复制物理文件:

scp -r /data/data/r3 /data/data/r4

步骤 2:在源复制集中插入新文档(用于验证同步)

在源复制集中插入一条新文档:

rs1:PRIMARY> db.c1.insert({age:20})

步骤 3:启动新节点并启用28014端口

新节点使用相同的配置文件启动,并启用相应的端口:

/Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r4 --fork --port 28014 --dbpath=data/data/r4 --logpath=/data/log/r4.log --logappend --fastsync

步骤 4:将新节点添加到复制集

使用rs.add命令将新节点加入复制集:

rs1:PRIMARY> rs.add("localhost:28014")

步骤 5:验证数据同步

通过检查新节点的数据是否正确同步:

rs1:SECONDARY> db.c1.find()

总结

通过以上两种方法,可以有效地增加MongoDB复制集的节点数量。选择哪种方法取决于具体的业务需求和场景。oplog直接添加节点简单,但可能存在数据一致性问题;而数据库快照加oplog的方式更加稳定,适合需要高数据一致性的场景。

转载地址:http://qiffk.baihongyu.com/

你可能感兴趣的文章
multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
查看>>
MySQL DBA 数据库优化策略
查看>>
multi_index_container
查看>>
MySQL DBA 进阶知识详解
查看>>
Mura CMS processAsyncObject SQL注入漏洞复现(CVE-2024-32640)
查看>>
Mysql DBA 高级运维学习之路-DQL语句之select知识讲解
查看>>
MurmurHash 与其他哈希算法的区别
查看>>
mysql deadlock found when trying to get lock暴力解决
查看>>
Musetalk如何优化嘴部,提高清晰度?
查看>>
MuseTalk如何生成高质量视频(使用技巧)
查看>>
mysql default unix_timestamp(now())
查看>>
mutiplemap 总结
查看>>
MySQL DELETE 表别名问题
查看>>
Mutual Training for Wannafly Union #8 D - Mr.BG Hates Palindrome 取余
查看>>
MySql DML语言新增多行数据、修改删除多个表
查看>>
MUX VLAN (Multiplex VLAN) 提供了一种通过 VLAN 进行网络资源控制的机制
查看>>
mysql docker远程备份数据库_docker环境下数据库的备份(postgresql, mysql) 实例代码
查看>>
MVC 301重定向(永久重定向不带www域名到带www的域名)
查看>>
Mysql Dump命令
查看>>
Mvc Action可以通过jsonp方式调取
查看>>