?? · 数据写入时将数据迅速复制到另一个独立节点上
?? · 在接收写入的节点发生故障时自动选举出一个新的替代节点
?? · 数据分发:将数据从一个区域复制到另一个区域,减少另一个区域的读延迟
?? · 读写分离:不同类型的压力分别在不同的节点上执行
?? · 异地容灾:在数据中心故障时快速切换到异地
?? · 一个主节点(PRIMARY):接受写入操作和选举时投票
?? · 两个(或多个)从节点(SECONDARY):复制主节点上的新数据和选举时投票
?? · 不推荐使用Arbiter(投票节点,即不做数据存储只用来投票)
?? 如何启动一个MongoDB实例
?? 如何将3个MongoDB实例搭建成一个复制集
?? 如何对复制集运行参数做一些常规调整
mkdir -p /data/db{1,2,3}
systemLog:
destination: file
path: /data/db1/mongod.log # log path
logAppend: true
storage:
dbPath: /data/db1 # data directory
net:
bindIp: 0.0.0.0
port: 28017
replication:
replSetName: rs0
processManagement:
fork: true
systemLog:
destination: file
path: /data/db2/mongod.log # log path
logAppend: true
storage:
dbPath: /data/db2 # data directory
net:
bindIp: 0.0.0.0
port: 28018
replication:
replSetName: rs0
processManagement:
fork: true
systemLog:
destination: file
path: /data/db3/mongod.log # log path
logAppend: true
storage:
dbPath: /data/db3 # data directory
net:
bindIp: 0.0.0.0
port: 28019
replication:
replSetName: rs0
processManagement:
fork: true
./mongod -f /data/db1/mongod.conf
./mongod -f /data/db2/mongod.conf
./mongod -f /data/db3/mongod.conf
ps -ef | grep mongod
来确认已经正确运行hostname -f
可以查看)#假定使用28017做为主节点
./mongo --port 28017 # 进入mongodb的终端
> rs.initiate()
>rs.add("localhost:28018") # 如果localhost不行可改为本机ip
>rs.add("localhost:28019")
#假定使用28017做为主节点
./mongo --port 28017 # 进入mongodb的终端
# 如果localhost不行可改为本机ip
> rs.initiate({
_id:"rs0",
members:[{
_id:0,
host:"localhost:28017"
},{
_id:1,
host:"localhost:28018"
},{
_id:2,
host:"localhost:28019"
}]
})
rs.status()
可以查看复制集状态# mongo localhost:28017
> db.test.insert({a:1})
> db.test.insert({a:2})
# mongo localhost:28018
> rs.salvaOk()
> db.test.find()
MongoDB学习4:MongoDB复制集机制和原理,搭建复制集
原文:https://www.cnblogs.com/xiaoqingtian/p/13472426.html