mongo1:复制集(副本集)

说明

复制集合通过多分冗余的数据,实现数据库的高可用性;
mongodb原生支持复制集,通过内部的Oplog实现节点之间的数据同步功能;复制集是组成更大分片集群的基础单元,
在一个海量数据存储的分配集群中,每一个分片都是一个独立的复制集。

单体复制集

典型的mongo复制集包含至少三个节点,1个primary和2个secondary节点,每个节点运行一个完整的mongo实例。


image.png

这里使用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()
image.png

image.png

参考资料
《MongoDB核心原理与实践》
《MongoDB 高手课》
-end-

你可能感兴趣的:(mongo1:复制集(副本集))