mongodb副本集配置

阅读更多

mongodb的副本集可以很方便的做到数据实时同步到所有主机。比mysql使用更加方便。

副本集至少需要2台主机,一台为主(primary),一台为从(slave),如果多台主机,则一台为主,其他都是从。当主服务器发生故障时,从服务器会探测到并共同选举出一个新的主服务器,从而保证服务不间断,当然为了程序也要相应配合,如mongodb配置多个服务器。

注意:2台服务器时,如果主服务器故障,剩下从服务器也无法提升为主服务器,而是不再提供写入服务。如果从服务器故障,主服务器自动变为从服务器,也无法提供写入服务。所以2台主机时只是为了数据冗余而设置的。

设置方法:

1、2台服务器配置文件完全相同:

vim mongod.conf

systemLog:
  destination: file
  logAppend: true
  path: /web/mongodb/mongod.log

storage:
  dbPath: /web/mongodb/data
  journal:
    enabled: true


net:
  port: 27017
  bindIp: 0.0.0.0
 
security:
  keyFile: "/web/mongodb/mongodb.key"
  clusterAuthMode: "keyFile"
  authorization: enabled
processManagement:
  fork: true
replication:
  oplogSizeMB: 2048
  replSetName: rs

注意:使用认证登录需要进行用户权限设置,见:https://canlynet.iteye.com/blog/2436380

2、这里使用了认证登录,所以,还需要创建认证文件mongodb.key:

openssl rand -base64 666 > /web/mongodb/mongodb.key

将这个key文件复制到所有从主机上。

3、添加节点:

rs.initiate({_id: 'rs', members: [
 {_id: 0, host: '192.168.1.8:27017'},
 {_id: 1, host: '192.168.1.9:27017'}
]});

如果还需要添加: rs.add('192.168.1.10:27017'), _id会自动增加1.

4、查看状态: rs.status()

 

 修改优先级,需要在Mongodb的Primary端执行:

config=rs.conf()

config.members[0].priority = 100;

config.members[1].priority = 1;

rs.reconfig(config)

如果当前primary不是第0个成员,那么停掉primary即可将第0个成员设置为primary。

 

你可能感兴趣的:(mongodb副本集配置)