基本概念

副本集(Replic Set),主要是实现高可用。确保数据的完整性。对于

思路

一个主服务器(Master)负责写入和更新,一个从服务器(Slaver)负责从主服务器同步数据,裁决服务器(Arbiter)用来投票,不存储数据。在主服务器挂掉的时候负责启动一个主服务器,如图:

MongoDB学习笔记——副本集搭建

MongoDB数据库做群集需要创建 Data文件夹和Log文件夹,用来存放数据和日志。数据就是我们存放的数据,日志用来同步数据。

这里我用Bat脚本创建

文件夹创建和日志文件

@echo off
d /d d:
rem 创建Master数据库文件夹
mkdir MongoDBCluster\Master\Data
mkdir MongoDBCluster\Master\Log
echo ''>D:\MongoDBCluster\Master\Log\Master.log

rem 创建Slaver数据库文件夹
mkdir MongoDBCluster\Slaver\Data
mkdir MongoDBCluster\Slaver\Log
echo ''>D:\MongoDBCluster\Slaver\Log\Slaver.log

rem 创建Arbiter数据库文件夹
mkdir MongoDBCluster\Arbiter\Data
mkdir MongoDBCluster\Arbiter\Log 
echo ''>D:\MongoDBCluster\Arbiter\Log\Arbiter.log

说明:目前使用的MongoDB版本是 MongoDB 5.0.5 Community

创建启动配置文件

Master.conf

#Master.conf    
dbpath=/MongoDBCluster/Master/Data
logpath=/MongoDBCluster/Master/Log/Master.log    
pidfilepath=/MongoDBCluster/Master/Master.pid    
directoryperdb=true    
logappend=true    
replSet=testrs    
port=27017   
bind_ip=0.0.0.0 

注意这里的bind_ip 我用的是 0.0.0.0 因为我的是个数据库实例都是本机,换成局域网ip会报错

Slaver.conf

#Slaver.conf    
dbpath=/MongoDBCluster/Slaver/Data
logpath=/MongoDBCluster/Slaver/Log/Slaver.log    
pidfilepath=/MongoDBCluster/Slaver/Slaver.pid     
directoryperdb=true    
logappend=true    
#replSet=testrs    
port=27018   
bind_ip=0.0.0.0 

Arbiter.conf

#Arbiter.conf    
dbpath=/MongoDBCluster/Arbiter/Data
logpath=/MongoDBCluster/Arbiter/Log/Arbiter.log    
pidfilepath=/MongoDBCluster/Arbiter/Arbiter.pid     
directoryperdb=true    
logappend=true    
#replSet=testrs    
port=27019 
bind_ip=0.0.0.0 

dbpath:数据存放目录

logpath:日志存放路径

pidfilepath:进程文件,方便停止mongodb

directoryperdb:为每一个数据库按照数据库名建立文件夹存放

logappend:以追加的方式记录日志

replSet:replica set的名字

bind_ip:mongodb所绑定的ip地址

port:mongodb进程所使用的端口号,默认为27017

oplogSize:mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%

fork:以后台方式运行进程

noprealloc:不预先分配存储

根据配置启动MongoDB实例

'启动Master库
mongod -f D:\MongoDBCluster\Master\Master.conf  
'启动Slaver库
mongod -f D:\MongoDBCluster\Slaver\Slaver.conf  
'启动Arbiter库
mongod -f D:\MongoDBCluster\Arbiter\Arbiter.conf  

这里的启动是阻塞式启动,可以安装成服务去启动。

启动Master
MongoDB学习笔记——副本集搭建

启动Slaver
MongoDB学习笔记——副本集搭建

启动Arbiter
MongoDB学习笔记——副本集搭建

配置配置服务器

进入mongoshell,输入如下命令:


cfg = {
	_id: "testrs",
	members: [{
		_id: 0,
		host: '192.168.200.131:27017',
		priority: 1
	}, {
		_id: 1,
		host: '192.168.200.131:27018',
		priority: 1
	}, {
		_id: 2,
		host: '192.168.200.131:27019',
		arbiterOnly: true
	}]
};
rs.initiate(cfg)

通过status方法查看
rs.status() 

配置应用成功

MongoDB学习笔记——副本集搭建

验证

  1. 分别打开主库Master(端口号是27017) 和 从库 Slaver(端口号是27018)
  2. 在主库上创建了一个test 数据库,又创建了testinfo 集合,并导入了数据。如图:

MongoDB学习笔记——副本集搭建

现在演示停掉主库进程,用来模拟宕机。

再次查看客户端,如图:

MongoDB学习笔记——副本集搭建

至此。

参考资料:

https://blog.csdn.net/u013123046/article/details/79896935

https://www.cnblogs.com/ryzblog76/p/8618388.html

https://www.cnblogs.com/shw0099/p/8241263.html

https://blog.csdn.net/u014467089/article/details/94435154

MongoDB官网文档

MongoDB中文手册官方文档中文版

相关文章: