mongodb副本集

副本集群的工作原理
1. 初始化副本集:首先,需要创建一个配置文件,该文件定义了副本集的各个节点信息以及选举规则等。然后,启动多个mongod进程,每个进程使用相同的配置文件。最后,使用mongo工具连接到副本集,将各个节点加入副本集中。

2. 选主过程:当副本集初始化完成后,将开始选主过程。选主过程通过选举算法选举出一个主节点,负责处理客户端的读写请求。如果主节点宕机,副本节点将自动发起新的选主过程,选举出新的主节点。

3. 数据同步:副本节点的主要任务是从主节点复制数据,以保持与主节点的数据同步。复制过程分为两个阶段:初始化同步和持续同步。初始化同步发生在副本节点加入副本集时,副本节点将从主节点复制全部数据。持续同步发生在初始化同步完成后,副本节点定期从主节点复制新的数据。

4. 读写操作:客户端可以通过连接到主节点或副本节点进行读写操作。默认情况下,客户端将连接到主节点进行读写操作。如果主节点不可用,客户端可以自动切换到其他副本节点进行读写操作。

2.环境准备

1.确保你已经安装了MongoDB并且每个实例都在运行

2.启动MongoDB实例,并指定--replSet参数来定义副本集的名称。

例如,你可以在启动MongoDB服务时使用以下命令来定义副本集名称:

这里rs0是副本集的名称,端口27017、27018和27019是分别运行的MongoDB实例的端口。

3.配置集群

进入其中一个实例,配置设置

useadmin
config={_id:"rs0",members:[
{_id:0,host:"localhost:27017","priority":3},
{_id:1,host:"localhost:27019","priority":2},
{_id:2,host:"localhost:27020","priority":1}
]}
rs.initiate(config)

其中第一个“id”为复制集的ID标识,即"id":“rs0”;第二个“id”是复制集内成员的标识,即"id":0。
priority为节点优先级,数字越高,优先级越高。

4.使用命令来查看复制集状态
rs.status()

我们现在已经完成了复制集的搭建。
还有一种初始化的方法,就是先只初始化一个节点,然后再通过命令rs.add("ip:port") 来添加从节点或
通过命令rs.addArb("ip:port")来添加投票节点。

5.验证MongoDB复制集
接下来需要验证一下复制集的数据同步。
在主节点(127.0.0.1:27017)上的test库collection集合c1中插入数据。

usetest
db.c1.insert({name:"zpq",age:1})

登陆另一个从节点(127.0.0.1:27019)验证是否同步,命令

mongo127.0.0.1:27019
或者
mongolocalhost:27019
或者
mongo-port27019(因为IP都是一样的,就不需要指定IP了)

我们需要运行命令: 副本集的从库持久设置

rs.slaveOk()

6.MongoDB复制集简单维护
我们可以通过修改上面这些参数来进行复制集的维护;首先登陆到主节点mongo 127.0.0.1:27017,因为只能在主节点上操作。

1.增加从节点

rs.add(“ip:port”)
rs.add({"_id":4,“host”:“ip:port”,“priority”:1,“hidden”:false})

2.增加投票节点

rs.addArb(“ip:port”)
rs.addArb({"_id":5,“host”:“ip:port”})
rs.add({"_id":5,“host”:“new_node:port”,“arbiterOnly”:true})

3.删除节点

rs.remove(“ip:port”)

4.修改节点参数

(1)config=rs.conf()
(2)config.members[i].参数=值
(3)rs.reconfig(config,{“force”:true})或
rs.reconfig(config),前面是强制重新配置

3.最后

副本集的优点
1. 高可用性:副本集提供了自动故障转移功能,确保在主节点宕机时,副本节点能够自动接替主节点,继续提供服务。

2. 冗余性:副本集提供了数据冗余,确保了数据的安全性和可靠性。即使个别节点出现故障,整个系统仍然可以继续运行。

3. 负载均衡:副本集可以实现负载均衡,将读写操作分布在多个节点上,提高系统性能。

4. 回滚支持:副本集支持回滚操作,当发现数据不一致时,可以通过回滚操作恢复到一致的状态。

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值