mongodb副本集配置
young / / mongodb / 阅读量

准备:

3台安装好mongodb3.6的服务器

192.168.2.252:27017
192.168.2.179:27017
192.168.2.180:27017

各自放开防火墙端口,关闭selinux

配置文件

mongodb.conf

systemLog:
  destination: file
  logAppend: true
  #log文件路径
  path: db_path/mongodb.log
storage:
  #db文件路径
  dbPath: data_path
  journal:
    enabled: true
  directoryPerDB: true
  wiredTiger:
    engineConfig:
      #最大可使用内存
      configString : cache_size=2G
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true
processManagement:
  fork: true
  #pid文件路径
  pidFilePath: db_path/mongodb.pid
net:
  #端口号
  port: 27010
  bindIp: 0.0.0.0
  maxIncomingConnections: 20000
security:
  javascriptEnabled: true
replication:
  oplogSizeMB: 10240
  #副本集名称
  replSetName: repl1

启动

依次启动3台mongodb服务器

[root@localhost]# mongod -f mongodb.conf

配置成员(可在任意一台服务器进行)

登录mongodb

mongo --port 27010

一主双从

> cfg={_id:'repl1',members:[{_id:0,host:'192.168.2.252:27017'},{_id:1,host:'192.168.3.179:27017'},{_id:2,host:'192.168.3.180:27017'}]}
# 接下来,需要让配置生效:
> rs.initiate(cfg)

一主一从一仲裁

> cfg={_id:'repl1',members:[{_id:0,host:'192.168.2.252:27017'},{_id:1,host:'192.168.3.179:27017'}]}
# 接下来,需要让配置生效:
> rs.initiate(cfg)
# 然后执行下面命令,为集群添加仲裁节点:
> rs.addArb("192.168.3.180:27017");

这时候,再看看当前的状态:

rs.status()

我们在一开始,并没有强制设定哪个IP是primary节点,哪个是secondary节点。这完全由Mongodb集群来决定。这时在命令行下,提示符也发生了变化。

# Primary节点:
PRIMARY>
# Secondary节点:
SECONDARY>
# Arbiter节点()
ARBITER>

这是如果直接在secondary上操作,会发生如下错误:

SECONDARY> db.t.find()
error: { "$err" : "not master and slaveok=false", "code" : 13435 }

需要告知Mongodb集群,从哪台机器上进行读操作:

SECONDARY> rs.slaveOk()
not master and slaveok=false

这时就不会有刚才的错误了。

测试

# 在primary节点写入操作:
PRIMARY>; db.t.insert({uid:12345})
PRIMARY>; db.t.find()
{ "_id" : ObjectId("52848f782c6dd18b00fdf65d"), "uid" : 12345 }
# 在secondary节点读操作
SECONDARY>; db.t.find()
{ "_id" : ObjectId("52848f782c6dd18b00fdf65d"), "uid" : 12345 }

URI连接

使用URI格式连接mongo

# mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=myRepl
mongodb://192.168.2.252:27017,192.168.2.179:27017,192.168.2.180:27017/?replicaSet=repl1

使用此方式连接,其中一个节点故障后会自动迁移,另外此方式还可通过readPreference配置读写分离等相,其它参数详情请看官方文档

支付宝捐赠
请使用支付宝扫一扫进行捐赠
微信捐赠
请使用微信扫一扫进行赞赏
有 0 篇文章