环境:
目录结构
/data
|--conf
|--config.js
|--node1.cnf
|--node1.cnf
|--node1.cnf
|--db
|--node1
|--node2
|--node2
|--key
|--node1
|--node2
|--node3
|--log
|--node1.log
|--node2.log
|--node3.log
|--run
|--runconfig.sh
|--runnode1.sh
|--runnode2.sh
|--runnode3.sh
举几个文件,其他类似:
node1.cnf:
replSet=shard1 #keyFile=/home/madding/output/mongodb/replica_set/key/r0 dbpath=/home/madding/output/mongodb/replica_set/data/r0 logpath=/home/madding/output/mongodb/replica_set/log/r0.log port=10240
config.js:
_id:'shard1', members:[ {_id:1, host:'192.168.1.100:27011', priority:1}, {_id:2, host:'192.168.1.100:27012'}, {_id:3, host:'192.168.1.100:27013'}] } rs.initiate(config_rs1); rs.slaveOk(); printjson('status info:'); printjson(rs.status()); printjson('result info: '); printjson(rs.isMaster());
ANKDIUOJHKJDLKFJHDOUDOJFKLDJ
随便复杂,保证node1,node2,node3一致即可
runconfig.sh:
MONGODB_HOME=~/mongodb $MONGODB_HOME/bin/mongo ../conf/config.js --port 27011 --quiet exit
runnode1:
#!/bin/bash MONGODB_HOME=~/mongodb $MONGODB_HOME/bin/mongod -f ../conf/node1.cnf --logappend --fork exit
运行顺序:
1.分别启动runnode1,runnode2,runnode3 ps看下进程是否都启动成功
2.运行runconfig 如果信息显示正常,说明已经建立成功。
测试场景:
1.kill node1进程:
mongo客户端:
自动切换primary;
node1客户端可查询,不可插入;
java驱动:
采用集群连接,发现可正常查询,插入,业务不受影响
说明:如果是kill -9方式,可能会导致mongo对应实例下的lock文件还在,删除掉后才能重启,要不然会重启失败
2.恢复node1进程:
node1 mongod数据同步
node1没有切换为primary ,主从维持在kill时的水平
3.当两个mongod实例(包括SECONDARY和PRIMARY组合)挂掉,是否可对外提供服务:
mongo客户端:指定端口的可以连接,但是由于两个挂了导致没办法把SECONDARY切换到PRIMARY,只能查询不能修改
java驱动:根据现象提示
at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:436) at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:211) at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:305) at com.mongodb.DBCursor._check(DBCursor.java:369) at com.mongodb.DBCursor._hasNext(DBCursor.java:504) at com.mongodb.DBCursor.hasNext(DBCursor.java:529) at ReplicaSets.main(ReplicaSets.java:57)
也就是此时没办法对外提供服务,虽然还有一个SECONDARY存活
注:如果最后一个保留下来的是PRIMARY,虽然短暂提供服务,但是一会儿后就自动切换为SECONDARY。
4.当两个实例挂掉,重启一个实例,是否可对外提供服务:
mongo客户端:此时自动切换一台为PRIMARY,查询操作正常
java驱动:只要设置自动重连,等待几秒即可恢复正常
注:发现在一台机器中操作,过程中出现一个实例把两一个socket端口占用现象,主要是因为web监控的端口,1000间隔。
建议启动是先启动初始的PRIMARY最后启动
5.两个mongo实例是否可构建replica sets:
基于以上分析,虽然两个能构建复制集,但是由于一个挂掉,另一个自动切换为SECONDARY,做不到热备,因此没有价值。
6.三台同时挂掉,重启是否正常:
三台挂掉,重启后,会出现其中一台recovering,但是之后三台状态就能恢复正常,一个primary,两个secondary
转载原文地址不详,见者请告知。
相关推荐
在大型分布式系统中,为了实现高可用性和水平扩展,MongoDB提供了两种关键特性:副本集(Replica Sets)和分片(Sharding)。这篇博客将探讨如何搭建MongoDB的副本集和分片集群。 首先,我们来理解一下MongoDB的...
mongodb集群搭建完成后,需要进行数据库测试和使用,以便验证mongodb的高可用性和高性能。 读和写的分离 mongodb的读和写操作需要分离,以便提高mongodb的高性能和高可用性。 mongodb高可用完全分布集群的搭建...
在本文中,我们将深入探讨如何搭建MongoDB的伪分布集群,这对于测试和学习分布式数据库操作非常有帮助。 首先,理解“伪分布集群”意味着在单个机器上模拟多节点的MongoDB集群。这通常是为了在没有多台物理或虚拟...
- **分片(Shards)**:每个分片都包含数据的一个子集,分片可以是单一的MongoDB实例也可以是一组副本集(Replica Set),后者提供了更高的可用性和数据冗余。 - **配置服务器(Config Servers)**:配置服务器用于...
在Windows环境中,搭建MongoDB的主从复制集群是一项常见的任务,以实现数据冗余和高可用性。以下是关于"单台windows搭建mongoDb主从集群"的知识点详细说明: 1. **主从复制(Replication)**: MongoDB的主从复制是...
本文档将详细介绍如何搭建一个基本的MongoDB集群——即副本集(replica set)。 #### 二、准备工作 **1. 环境准备** 假设您有三台机器,其IP地址分别为: - 192.168.20.195 - 192.168.20.196 - 192.168.20.197 ...
### MongoDB分布式集群搭建详解 #### 一、集群与分布式概念 **集群(Cluster)**与**分布式(Distributed)**是两种常见的架构设计模式,用于提高系统的可用性、可伸缩性和性能。 1. **集群(Cluster)** - **定义**:...
### 小米电商Mongodb集群文档关键知识点解析 #### 标题与描述解析 - **标题**:“小米科技 电商部门 Mongodb sharding Cluster with Replica ...这对于理解如何高效地搭建和管理大型MongoDB集群具有重要的参考价值。
在本文档中,我们将详细介绍如何在CentOS 7.0系统上搭建基于MongoDB 3.4.3版本的集群环境,包括分片(sharding)和副本集(replica sets)的配置。本文档将介绍相关概念、环境准备、机器规划及端口分配、集群搭建的...
对于需要快速搭建和维护MongoDB复制集的团队来说,这是一个非常实用的工具。不过,使用时需要注意,虽然自动化可以节省时间,但在生产环境中部署之前,应该先在测试环境中进行充分的验证,确保所有配置和流程都符合...
- **复制集(Replica Set)**:这是MongoDB的复制模式,它比传统的主从模式更高级,提供了自动故障转移和更高级的数据一致性保障。 #### 部署模式 - **副本集成员(Replica Set Members)**:这是构成复制集的...
为了实现MongoDB的高可用性,MongoDB 3.0及以上版本引入了副本集(Replica Sets)的概念,副本集提供了自动故障转移和数据冗余的功能,是推荐的高可用性解决方案。副本集由一组mongod进程组成,其中一个为primary...
MongoDB的主从复制是一种数据冗余和故障转移机制,它允许数据在多个服务器之间进行复制,确保数据的安全性和可用性。在这个过程中,一个MongoDB实例作为主节点,负责接收所有写操作,而其他实例作为从节点,同步主...
在本文中,我们将深入探讨如何使用Vagrant工具搭建一个包含三个节点的MongoDB集群,该集群配置为使用副本集进行数据持久化和高可用性。Vagrant是一种流行的开发环境自动化工具,它允许开发者在本地模拟多种操作系统...
在测试环境中搭建MongoDB主从集群,需要规划好硬件资源、操作系统、MongoDB版本、数据目录、日志文件、端口等。例如,在本例中,选择了CentOS 6.6 x64作为操作系统,MongoDB 3.6.7作为数据库版本,主节点的IP为10.1....
MongoDB支持多种部署方式,包括单节点部署、副本集(Replica Set)、分片集群(Sharded Cluster)等。其中,副本集和分片集群是构建高可用和高性能MongoDB系统的关键。 ##### 副本集 副本集是MongoDB的一个关键...
《Node.js + MongoDB 全套视频教程》是一套全面、深度解析Node.js和MongoDB的教育资源,旨在帮助开发者从新手成长为全栈工程师的必备宝典。这套教程包含了基础、进阶和高级三个阶段,以及丰富的项目实战环节,覆盖了...
### 小米电商Mongodb集群文档v1.0.1 #### 重要知识点解析 **一、MongoDB 分片群集(Sharding Cluster)** **1.... MongoDB 的分片(Sharding...通过遵循这份文档,可以有效地搭建和管理一个高性能的 MongoDB 分片集群。
在搭建好sharding集群后,需要对集群进行测试,确保读写操作能正确地自动路由到相应的shards。同时,也需要对集群进行维护和扩展,比如添加新的shards、config servers或route servers,以及进行数据备份和灾难恢复...