Mongodb主、副、仲裁节点集群安装(附带开启用户认证)

本文详细介绍了如何搭建MongoDB的Replica Set集群,包括主节点、副节点和仲裁节点的配置,以及开启用户认证的步骤。通过副本集,确保在主节点故障时能无缝切换到备节点,保证数据服务的连续性。同时,文章提到了仲裁节点的作用和配置注意事项,并分享了集群配置生效后的检查方法。最后,作者提及了MongoDB在大数据存储和检索方面的应用,并推荐了Elasticsearch作为大数据检索平台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mongodb 的集群方式主要分为三种Replica Set / Sharding / Master-Slaver ,这里只说明最简单的集群搭建方式(生产环境),如果有多个节点可以此类推或者查看官方文档。

Replica Set

       中文翻译叫做副本集。其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据需要和主节点一致。如下图:

       Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点。主备节点存储数据(M,S),仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。

       默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。这个设置叫做Read Preference Modes,同时Java客户端提供了简单的配置方式,可以不必直接对数据库进行操作。

       仲裁节点是一种特殊的节点,它本身并不存储数据,主要的作用是决定哪一个备节点在主节点挂掉之后提升为主节点,所以客户端不需要连接此节点。这里虽然只有一个备节点,但是仍然需要一个仲裁节点来提升备节点级别。

介绍完了集群方案,那么现在就开始搭建了。

1、将三台计算机同时下载,解压安装文件

 下载命令:apt-get install mongo

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.6.tgz

2、同时创建mongodb数据文件夹  

mkdir -p /mongodb/data/master   
mkdir -p /mongodb/data/slaver   
mkdir -p /mongodb/data/arbiter    
#三个目录分别对应主,备,仲裁节点 

3、建立配置文件(M,S,A)

 (一) 主节点配置文件 

 #master.conf  
 dbpath=/mongodb/data/master  
 logpath=/mongodb/log/master.log  
 pidfilepath=/mongodb/master.pid  
 directoryperdb=true  
 logappend=true  
 replSet=testrs  
 bind_ip=172.17.79.42
 port=27017
 oplogSize=10000
 fork=true
 noprealloc=true
 #auth=true
 #keyFile =/home/mongodb/master/mongo.keyfile

 (二) 从节点配置文件 

 #slaver.conf  
 dbpath=/mongodb/data/slaver  
 logpath=/mongodb/log/slaver.log  
 pidfilepath=/mongodb/slaver.pid  
 directoryperdb=true  
 logappend=true  
 replSet=testrs  
 bind_ip=172.17.79.42
 port=27018
 oplogSize=10000
 fork=true
 noprealloc=
在讨论NULL之前,先针对在Windows环境下搭建MongoDB本集并配置仲裁节点这一需求提供指导。 ### Windows环境下搭建MongoDB本集 #### 1. 安装MongoDB 确保已经安装了最新版本的MongoDB。可以从官方网站下载适合Windows系统的安装包,并按照官方文档完成安装过程[^3]。 #### 2. 创建数据目录 为每个成员创建独立的数据存储路径。例如,在命令提示符下执行如下指令: ```cmd mkdir C:\data\db\rs0_1 mkdir C:\data\db\rs0_2 mkdir C:\data\db\arbiter ``` 这些文件夹分别对应于两个数据节点和一个仲裁节点的数据存放位置。 #### 3. 启动第一个实例作为主节点 通过命令行启动mongod服务,指定端口号、日志输出以及上面创建的第一个数据目录: ```cmd "C:\Program Files\MongoDB\Server\<version>\bin\mongod.exe" --port 27017 --dbpath "C:\data\db\rs0_1" --logpath "C:\data\db\rs0_1.log" --replSet rs0 --bind_ip localhost,<ip_address> --fork ``` 注意替换`<version>`为你实际安装MongoDB版本号, `<ip_address>`为机IP地址。 #### 4. 启动第二个实例作为次级节点 同样方式启动另一个mongod进程,但更改端口和其他参数以匹配新的角色设置: ```cmd "C:\Program Files\MongoDB\Server\<version>\bin\mongod.exe" --port 27018 --dbpath "C:\data\db\rs0_2" --logpath "C:\data\db\rs0_2.log" --replSet rs0 --bind_ip localhost,<ip_address> --fork ``` #### 5. 初始化本集 连接到任意一台服务器上的mongo shell客户端,初始化本集合: ```javascript rs.initiate({ _id : "rs0", members: [ { _id : 0, host : "<hostname_or_IP>:27017"}, { _id : 1, host : "<hostname_or_IP>:27018"} ] }) ``` 这里需要将`<hostname_or_IP>`替换成真实的机名或IP地址。 #### 6. 添加仲裁者 为了提高投票效率而不增加额外负载,可以在集群中加入只参与选举决策而不保存数据的仲裁节点。使用以下命令添加仲裁器: ```javascript rs.addArb("<hostname_or_IP>:27019") ``` 在此之前应已按前述方法启动第三个mongod实例监听27019端口,不过其`--dbpath`指向的是专门准备给仲裁者的空目录。 --- 关于NULL的概念,这要是在编程上下文中提到的一个特殊值,用来表示缺失的有效数据引用[^2]。然而,在上述有关MongoDB本集配置的过程中并没有涉及到NULL的具体应用;相反,重点在于如何正确地部署多个数据库实例和服务之间的通信机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值