当前位置:Gxlcms > 数据库问题 > mongodb的复制集配置

mongodb的复制集配置

时间:2021-07-01 10:21:17 帮助过:32人阅读

:

         Server1 : 192.168.189.129:5555

         Server2 : 192.168.189.131:5555

         Server3 : 192.168.189.132:5555


 

一:下载,安装mongodb。

 #cd /usr/local/src
 #wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-2.2.2.tgz
 #tar -zxvf mongodb-linux-x86_64-2.2.2.tgz
 #mv mongodb-linux-x86_64-2.2.2  /usr/local/mongodb

  创建数据库目录与日志目录

server1:
     #mkdir -p /data/mongodb/db1/
     #mkdir -p /usr/local/mongodb/logs/
Server2:
     #mkdir -p /data/mongodb/db2/
     #mkdir -p /usr/local/mongodb/logs/

 


二:创建,配置mongodb.conf。

#cd /usr/local/mongodb/

Server1:
#vi mongodb.conf
port = 5555
dbpath = /data/mongodb/db1/
logpath = /usr/local/mongodb/logs/m1.log
rest = true
fork = true
replSet = cmhdbset/192.168.189.129:5555,192.168.189.131:5555    //配置副本集集群
logappend = true
quiet = true
journal = true
 
Server2:
#vi mongodb.conf
port = 5555
dbpath =  /data/mongodb/db2/
logpath = /usr/local/mongodb/logs/m2.log
rest = true
fork = true
replSet = cmhdbset/192.168.189.129:5555,192.168.189.131:5555
logappend = true
quiet = true
journal = true

 


三:启动mongodb,观察mongodb副本集状态。

  依次启动server1,server2mongodb:

#/usr/local/mongodb/bin/mongod –f /usr/local/mongodb/mongodb.conf

  查看日志,发现无法连接副本集:

#tail –f /usr/local/mongodb/logs/m1.log
Mon Jul 29 16:48:53 [rsStart] replSet can‘t get local.system.replset config from self or any seed (EMPTYCONFIG)

 原因是还未初始化副本集,所以无法连接,因此需要初始化副本集。

       server1上使用客户端脚本连接mongodb,并初始化副本集,初始化命令如下:

#db.runCommand({"replSetInitiate" : { "_id" : "cmhdbset" ,"members" : [ { "_id" : 1, "host" : "192.168.189.129:5555"},{ "_id" : 2, "host" : "192.168.189.131:5555"}]}})

  操作如下图:

技术分享

  查看副本集节点状态

技术分享

  可以看到Server1已经被选举为“Primary”活跃节点,Server2成为“Secondary”备份节点。

 


增加mongodb副本集节点。

  这时可以把Server3增加到cmhdbset副本集中。

  首先安装mongodb,参考第一步。

  创建并配置mongodb.conf:

#vi /usr/local/mongodb/mongodb.conf
port = 5555
dbpath = /home/data/mongodb/db3/
logpath = /home/usr/local/mongodb/logs/m3.log
rest = true
fork = true
replSet = cmhdbset/192.168.189.129:5555,192.168.189.131:5555 //添加已有的集群成员即可
logappend = true
quiet = true
journal = true

 开启server3mongodb:

#/usr/local/mongodb/bin/mongod –f /usr/local/mongodb/mongodb.conf

 查看日志发现server3无法连接副本集:

技术分享

  这是因为副本集中还没有server3的信息,需要在Primary节点上添加Server3节点信息:

技术分享

  查看server3日志,现在server3已经加入副本集,状态为Secondary:

技术分享

  查看副本集状态,看到已经有了server3的信息,并且状态为Secondary:

技术分享


删除已有节点

  登陆Primary节点,删除Server3节点:

技术分享

  查看副本集信息,Server3节点已经移除掉了:

技术分享

  登陆Server3mongodb,发现提示符变为”removed”:

技术分享

 

 

==============================================================================

注:默认情况下,Secendary结点不能读写,需要设置了rs.slaveOk()后,才能进行读操作。

注:删除和添加副本集节点操作只能在Primary活跃节点进行。并且当前的活跃节点无法被删除。

注:添加一个仲裁节点:primary>rs.addArb("host:port")

  仲裁节点只参与投票,不参与选举。

技术分享

 


 

副本集节点优先级配置:

在副本集中配置节点的优先级,可以使之按照我们的想法,来决定由哪台服务器担任Primay节点。

  设置Server1的优先级参数priority=20(默认为1,范围1-100):

技术分享

  查看结点配置,Server1priority参数已经被设置为20:

技术分享

  配置完以后,Server1会被选举为primary节点。

      若想配置Secondary-Only模式,只要把服务器的priority设置为0即可。


本文出自 “linux运维” 博客,请务必保留此出处http://icenycmh.blog.51cto.com/4077647/1677825

mongodb的复制集配置

标签:mongodb   副本集   

人气教程排行