说明
复制集合通过多分冗余的数据,实现数据库的高可用性;
mongodb原生支持复制集,通过内部的Oplog实现节点之间的数据同步功能;复制集是组成更大分片集群的基础单元,
在一个海量数据存储的分配集群中,每一个分片都是一个独立的复制集。
单体复制集
典型的mongo复制集包含至少三个节点,1个primary和2个secondary节点,每个节点运行一个完整的mongo实例。
这里使用ubuntu 需要提前安装 mongodb-server-core 和 mongodb-clients
sudo apt install mongodb-server-core
sudo apt install mongodb-clients
创建db目录
mkdir -p /data/db{1,2,3}
准备mongod.conf配置文件分别放在db1、db2、db3,内容如下,修改路径和端口号
# /data/db1/mongod.conf
systemLog:
destination: file
path: /data/db1/mongod.log # 日志文件路径
logAppend: true
storage:
dbPath: /data/db1 # 数据目录
net:
bindIp: 0.0.0.0
port: 28017 # 端口
replication:
replSetName: rs0
processManagement:
fork: true
执行进程启动三个mongo
mongod -f /data/db1/mongod.conf
mongod -f /data/db2/mongod.conf
mongod -f /data/db3/mongod.conf
执行mongo shell
mongo --port 28017
创建复制集
rs.initiate({
_id: "rs0",
members: [{
_id: 0,
host: "localhost:28017"
},{
_id: 1,
host: "localhost:28018"
},{
_id: 2,
host: "localhost:28019"
}]
})
查看复制集状态
rs.status()
在主节点添加一条数据
db.test.insert({a:1 })
子节点需要使用rs.slaveOk()允许读写后进行查看
db.test.find()
参考资料
《MongoDB核心原理与实践》
《MongoDB 高手课》
-end-