让我为您详细讲解“详解mongodb 主从配置”的完整攻略。
MongoDB主从配置详解
在MongoDB中,主从配置提供了一个高可用性和可扩展性的解决方案。主从复制是指将数据从一个MongoDB服务器同步到其他多个MongoDB服务器。我们可以将主服务器用于写操作,将从服务器用于读取和分担主服务器的读取压力。
步骤
- 配置主服务器
在主服务器中运行MongoDB,并设置以下参数:
bind_ip = 0.0.0.0 # 监听所有IP
port = 27017 # 默认端口
oplogSize = 1024 # 操作日志大小
replSetName =
- 配置从服务器
在从服务器中运行MongoDB,并设置以下参数:
bind_ip = 0.0.0.0 # 监听所有IP
port = 27017 # 默认端口
oplogSize = 1024 # 操作日志大小
replSetName =
- 初始化副本集
在主服务器连接MongoDB并初始化副本集:
```
rs.initiate()
```
- 添加从服务器到副本集
在主服务器连接MongoDB并添加从服务器到副本集:
```
rs.add("
: ")
```
例如:
```
rs.add("192.168.1.2:27017")
```
如果需要添加多个从服务器,可以重复此步骤。
- 验证副本集状态
在主服务器连接MongoDB并执行以下命令:
```
rs.status()
```
可以查看所有副本集成员的状态,确保所有成员都是健康的(即state
为1
)。
- 测试主从复制
在主服务器上添加一条文档,然后在从服务器上执行以下命令:
```
db.
.find()
```
如果文档已成功地复制到从服务器,则会在结果列表中看到该文档。
示例
这里提供两个示例说明:
示例1:单主双从
某公司需要一个MongoDB主从配置来存储电子商务网站的数据。他们决定使用单主双从的配置,其中一个服务器作为主服务器,另外两台服务器作为从服务器。
主服务器配置:
bind_ip = 0.0.0.0
port = 27017
oplogSize = 1024
replSetName = myreplica
从服务器1配置:
bind_ip = 0.0.0.0
port = 27017
oplogSize = 1024
replSetName = myreplica
从服务器2配置:
bind_ip = 0.0.0.0
port = 27017
oplogSize = 1024
replSetName = myreplica
在主服务器上初始化副本集并添加两个从服务器:
> rs.initiate()
> rs.add("192.168.1.2:27017")
> rs.add("192.168.1.3:27017")
验证副本集状态:
> rs.status()
如果所有成员都是健康的,则说明主从复制已成功配置。
示例2:多主多从
为了支持更高的写入吞吐量,某公司决定使用多主多从的MongoDB主从配置。他们需要两个主服务器和三个从服务器。
主服务器1配置:
bind_ip = 0.0.0.0
port = 27017
oplogSize = 1024
replSetName = myreplica
主服务器2配置:
bind_ip = 0.0.0.0
port = 27017
oplogSize = 1024
replSetName = myreplica
从服务器1配置:
bind_ip = 0.0.0.0
port = 27017
oplogSize = 1024
replSetName = myreplica
从服务器2配置:
bind_ip = 0.0.0.0
port = 27017
oplogSize = 1024
replSetName = myreplica
从服务器3配置:
bind_ip = 0.0.0.0
port = 27017
oplogSize = 1024
replSetName = myreplica
在主服务器1上初始化副本集并添加另一个主服务器和三个从服务器:
> rs.initiate()
> rs.add("192.168.1.2:27017")
> rs.add("192.168.1.3:27017")
> rs.add("192.168.1.4:27017")
> rs.add("192.168.1.5:27017")
在主服务器2上添加自己和另外三个从服务器:
> rs.add("192.168.1.6:27017")
> rs.add("192.168.1.4:27017")
> rs.add("192.168.1.5:27017")
> rs.add("192.168.1.2:27017")
验证副本集状态:
> rs.status()
如果所有成员都是健康的,则说明主从复制已成功配置。
以上是MongoDB主从配置的详细攻略,希望能对您有所帮助。