采用Master和Slave模式搭建MongoDB高可用集群

时间:2022-12-22 15:01:22

 

MongoDB是一个可扩展,高性能、开源、模式*、面向文档的数据库

 

它并不是我们通常用的RDBMS,属于最近比较热门的"NoSql"的数据库范畴

 

它和一般的基于key-value的db还是不大一样的,因为它本身的功能很强大

 

它已经实现了类似于SQL的很多功能,如index,limit,skip,group….

 

当应用的数据量达到海量级,传统的Mysql,Oracle不能满足我们的性能要求

 

而对于数据还有一定的查询需求时,也许可以考虑一下使用MongoDB

 

    MongoDB里提供了简单的Auth功能,如果要开启认证,则在启动之前,需要首先增加用户

 

折叠复制代码

 

  1. /usr/local/mongodb/bin/mongo admin

     

  2. db.addUser('admin','manager')

     

  3. db.auth('admin','manager')

     

  4. show dbs

     

  5. use address

     

  6. db.addUser('mongodb','test')

     

 

 

 

其中,admin是一个特殊的数据库,只有在admin上db.auth通过后,才能给其它的数据库增加权限

 

如上,我们为address数据库增加了一个mongodb的用户

 

另外,如果我们要启用Master/Slave模式,而且开启了Auth功能,则需要同时在Master和Slave上的local数据库上增加一个repl的用户

 

  1. use local

     

  2. db.addUser('repl','replication')

     

 

 

 

否则,当我们启动slave时,会报错:

 

replauthenticate: no user in local.system.users to use for authentication

 

 

replauthenticate: can't authenticate to master server, user:repl

 

然后,我们使用如下脚本来分别启动Master和Slave即可,注意–oplogSize选项,它指定了master往slave同步时,更新日志保存的最大大小,默认64位机器,最大1G,如果太小,slave没有及时跟上的话,有可能会数据不一致

 

折叠复制代码

 

  1. nohup /usr/local/mongodb/bin/mongod run –dbpath=/data/mongodb_data/ –logpath=/data/mongodb_data/mongodb.log –oplogSize=10000M –logappend –auth –master &

     

  2. nohup /usr/local/mongodb/bin/mongod run –dbpath=/opt/mongodb_data/ –logpath=/opt/mongodb_data/mongodb.log –logappend –auth –slave –source=192.168.10.10:27017 &