MongoDB副本集的搭建

Jackey MongoDB 1,321 次浏览 没有评论

mongodb单台服务器

数据会有丢失的风险

单台服务器无法做高可用性

mongodb副本集能够预防数据丢失,多台mongodb数据一致

mongodb副本集能够在有问题的时候自动切换

 

实战说明

使用两台服务器实战mongodb副本集,生产环境中建议至少三台服务器

两台服务器的ip为:192.168.237.128、192.168.237.129

集群搭建实战192.168.237.128:27017 192.168.237.129:27018 192.168.237.128:27019

 

mongodb副本集配置文件/data/mongodb/27017/mongodb.conf

systemLog:  

  destination: file  

  logAppend: true  

  path: /data/mongodb/27017/mongodb.log

storage:  

  dbPath: /data/mongodb/27017/  

journal:    

  enabled: true

processManagement:  

  fork: true

net:  

  port: 27017  

  bindIp: 0.0.0.0

replication:  

  replSetName: shijiange  # 同一个副本集,名字一样

 

 

启动三个mongodb服务器,需要对应更改端口、数据目录、日志路径

/usr/local/mongodb/bin/mongod -f /data/mongodb-cluster/27017/mongodb.conf

/usr/local/mongodb/bin/mongod -f /data/mongodb-cluster/27018/mongodb.conf

/usr/local/mongodb/bin/mongod -f /data/mongodb-cluster/27019/mongodb.conf

 

mongodb副本集的初始化及其状态查看

#id为副本集的名称

config = { _id:"shijiange", members:[

  {_id:0,host:"192.168.237.128:27017"},

  {_id:1,host:"192.168.237.129:27018"},

  {_id:2,host:"192.168.237.128:27019"}]

}

use admin

rs.initiate( config ) #副本集初始化,需要一定时间

rs.status() #副本集状态,一个primary,其它SECONDARY。primary是主,只有primary能写入

 

测试副本集的数据同步

/usr/local/mongodb/bin/mongo

use shijiange

db.myuser.insert( {userid: 1} )

rs.slaveOk() #SECONDARY需要声明是slave才能查看数据

从库无法插入数据

 

查看slave的延时情况

rs.printSlaveReplicationInfo()

 

优化参数要保持一致

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Go