MongoDB 复制集环境搭建

MongoDB 复制集环境搭建,第1张

MongoDB 复制集环境搭建

环境准备

单台服务器模拟

在一台主机中启动三个MonDB实例

mkdir ‐p /data/db{1,2,3}

服务一

dbpath=/data/db1
logpath=/data/db1/mongod.log
bind_ip=0.0.0.0
port=27017
fork=true
replSet=rs
dbpath=/data/db2
logpath=/data/db2/mongod.log
bind_ip=0.0.0.0
port=27018
fork=true
replSet=rs
dbpath=/data/db3
logpath=/data/db3/mongod.log
bind_ip=0.0.0.0
port=27019
fork=true
replSet=rs

启动服务

mongod -f /data/db1/mongod.conf
mongod -f /data/db2/mongod.conf
mongod -f /data/db3/mongod.conf

mongo --port=27017

rs.initiate({
    _id: "rs",
    members: [{
        _id: 0,
        host: "192.168.247.129:27017"
        },{
        _id: 1,
        host: "192.168.247.129:27018"
        },{
        _id: 2,
        host: "192.168.247.129:27019"
    }]
})


查看状态

rs.status()

在三台主机中

多台服务器模拟

一般准备奇数台复制集主机,这里使用三个。

首先准备好三台装好了MongoDB的服务器,地址分别如下:(注意三台主机的27017端口防火墙要放行,)

192.168.247.141
192.168.247.142
192.168.247.143

创建存放数据目录/data/mongodb/db 存放日志的目录/data/mongodb/logs,存放服务启动配置文件的目录/data/mongodb/conf

mkdir -p /data/mongodb/db /data/mongodb/logs /data/mongodb/conf

每台服务器的配置文件mongod.conf,添加replSet=rs,表示副本集的名称,修改后的配置文件内容如下:

vim /data/mongodb/conf/mongod.conf

dbpath=/data/mongodb/db
logpath=/data/mongodb/logs/mongodb.log
bind_ip=0.0.0.0
port=27017
fork=true
replSet=rs

修改完成之后,分别启动三台服务器上的MongoDB,

mongod -f /data/mongodb/conf/mongod.conf

启动成功之后,连接上任意一台的shell,连接成功之后,先定义配置文件,如下:

config={
    _id: "rs0",
    members: [{
        _id: 0,
        host: "192.168.247.140:27017"
        },{
        _id: 1,
        host: "192.168.247.141:27017"
        },{
        _id: 2,
        host: "192.247.142:27017"
    }]
}

id后面跟着的是副本集的名称,也就是我们在mongodb.conf中定义的名称,后面三个是副本集的成员,定义好之后,再执行如下命令初始化副本集:

rs.initiate(config)

也可以把上面2个命令写在一起

rs.initiate({
    _id: "rs0",
    members: [{
        _id: 0,
        host: "192.168.247.140:27017"
        },{
        _id: 1,
        host: "192.168.247.141:27017"
        },{
        _id: 2,
        host: "192.247.142:27017"
    }]
})

初始化成功之后,我们就可以通过rs.status()来查看副本集的状态,也可以看到每个服务器的角色,部分日志内容如下:

rs.status()

我们可以看到每台服务器的角色,有primary,也有secondary,secondary上还注明了从哪个服务器上同步数据。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/758818.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-01
下一篇2022-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存