mongodb的复制集配置

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

什么是mongodb副本集:

    mongodb副本集是一组mongodb服务器组成的一个副本集群。集群中包含一个Primary主服务器以及若干个Secondary备份服务器或者Artiber选举服务器。Secondary会向Primary服务器同步数据,实现集群内服务器的数据备份。当Primary宕机或无法提供服务时,集群会再次选举一个新的Primary服务器,以保证服务的正常,以及数据的安全。



配置副本集

  

配置环境:

         Server1 : 192.168.189.129:5555

         Server2 : 192.168.189.131:5555

         Server3 : 192.168.189.132:5555


 

一:下载,安装mongodb。

1
2
3
4
  #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

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

1
2
3
4
5
6
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。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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:

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

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

1
2
#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,并初始化副本集,初始化命令如下:

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

  操作如下图:

wKiom1Wxk5GDwGR-AAH5trle_Q4442.jpg

  查看副本集节点状态

wKioL1WxlbSjp8ChAALH54K9o2w723.jpg

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

 


增加mongodb副本集节点。

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

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

  创建并配置mongodb.conf:

1
2
3
4
5
6
7
8
9
10
#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:

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

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

wKioL1WxlrvyICeJAAEVYxEQ8_A050.jpg

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

wKiom1WxlQ7TKpY0AABgvwQw1oY579.jpg

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

wKiom1WxlTyyojZnAAu7Oc5_6dg473.jpg

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

wKioL1Wxl-TQ0Kj8AAQXDzGkemc936.jpg


删除已有节点

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

wKiom1WxljrxDJDNAAOpvLE4Py0829.jpg

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

wKioL1WxmDeAlWGjAAQmeHMbX-8092.jpg

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

wKioL1WxmMuTo58vAAQMG36gVuE025.jpg

 

 

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

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

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

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

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

wKioL1WxmUbgdFxlAAFQx-dc9Uw345.jpg

 


 

副本集节点优先级配置:

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

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

wKioL1WxmbbADtDDAAWthTNaJAw910.jpg

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

wKioL1Wxme3SOycSAAG-ci2qdsw149.jpg

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

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










本文转自 icenycmh 51CTO博客,原文链接:http://blog.51cto.com/icenycmh/1677825,如需转载请自行联系原作者

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
3月前
|
NoSQL 网络协议 Unix
第6期 MongoDB配置启动方式
第6期 MongoDB配置启动方式
285 0
|
5月前
|
存储 NoSQL MongoDB
mongodb 存引擎及配置
mongodb 存引擎及配置
|
1月前
|
存储 缓存 NoSQL
|
2月前
|
运维 NoSQL Linux
MongoDB详解(六)——MongoDB主从同步配置
MongoDB详解(六)——MongoDB主从同步配置
51 5
|
2月前
|
NoSQL Linux MongoDB
centos7搭建MongoDB以及MongoDB复制集
centos7搭建MongoDB以及MongoDB复制集
37 0
|
3月前
|
监控 NoSQL MongoDB
第5期 MongoDB配置用户名密码认证登录
第5期 MongoDB配置用户名密码认证登录
540 0
|
5月前
|
DataWorks NoSQL 网络安全
MongoDB的配置问题
MongoDB的配置问题
19 1
|
5月前
|
NoSQL MongoDB Docker
docker 配置mongoDB
docker 配置mongoDB
36 0
|
5月前
|
监控 NoSQL MongoDB
轻松掌握组件启动之MongoDB(番外篇):高可用复制集架构环境搭建-mtools
mtools是一个基于Python实现的MongoDB工具集,旨在提供一系列功能,包括MongoDB日志分析、报表生成以及简易的数据库安装等。它由MongoDB原生的工程师单独发起并进行开源维护。mtools包含了一些常用的组件,如mlaunch、mlogfilter、mplotqueries和mlogvis等,可以帮助我们更方便地启动和创建MongoDB数据库。
|
5月前
|
监控 NoSQL 安全
轻松掌握组件启动之MongoDB(下):高可用复制集架构环境搭建
本章介绍了MongoDB复制集的配置和使用方法,如何初始化和添加节点到复制集,验证主节点的写入和从节点的读取功能。了解如何查询复制集的状态,包括成员的健康状况、同步信息和角色等。最后,我们介绍了如何配置复制集的安全认证,包括创建用户和生成keyFile文件,并演示了使用认证信息连接复制集的方式。通过本章的学习,你将掌握MongoDB复制集的基本使用和配置方法。