需要用到mongodb的时候单个实例肯定是不行的,挂了怎么办,那然后呢,跟mysql一样搞主从备份吗,是可以的mongodb这么弄,不过官网已经不推荐了这么干了,推荐使用副本集的模式,然后数据再大一点到TB级别就需要使用分片节点模式了,不过没那么大的数据没用到过,不管它。副本集就是每个都是副本,没有主的数据库,由副本之间选举主的mongodb,可以这样理解下,就是看到mysql没有keepalived的功能,mongodb学乖了,就引入了这个功能,并且有些地方还优化了下,蛮好用的。

mongodb副本集一般是基数个,偶数个也行的不过要引入调节器,还不如加一个mongo实例来的方便。

官网教程:https://docs.mongodb.com/manual/replication/index.html

配置副本集模式:

1、副本集之间加入认证
需要生成keyfile:
先生成keyfile
openssl rand -base64 90 > /var/lib/mongo/mongodb-keyfile
然后复制到其它的服务器中
scp /var/lib/mongo/mongodb-keyfile root@192.168.108.145: /var/lib/mongo/mongodb-keyfile
两个服务器文件都要授权600
chmod 600 /var/lib/mongo/mongodb-keyfile

2、修改/etc/mongod.conf
服务器1的27017端口配置文件
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:

# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile

# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.

#security:
security:
keyFile: /var/lib/mongo/mongodb-keyfile
#operationProfiling:

#replication:
replication:
replSetName: water
#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:

服务器1的27018配置文件
# mongod.conf

# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod2.log

# Where and how to store data.
storage:
dbPath: /var/lib/mongo2
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:

# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile

# network interfaces
net:
port: 27018
# bindIp: 0.0.0.0
# bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.

#security:
security:
keyFile: /var/lib/mongo/mongodb-keyfile
#operationProfiling:

#replication:
replication:
replSetName: water
#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:
服务器2的27017端口
# mongod.conf

# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:

# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile

# network interfaces
net:
port: 27017
bindIp: 192.168.108.146
# bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.

security:
authorization: enabled
keyFile: /var/lib/mongo/mongodb-keyfile
#security:

#operationProfiling:

#replication:
replication:
replSetName: water
#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:

3个配置文件的副本集名称都设置成一样的,例如这里的water

3、设置admin用户名和密码
use admin
db.createUser({user:"admin",pwd:"password",roles:[{role:"root",db:"admin"}]})

以auth方式启动服务器2的mongodb,然后
#初始化,哪个服务器先初始化就是主服务器
rs.initiate()
use admin
db.auth("admin","password");
查看副本集节点状态
rs.status()

添加副本集
rs.add('192.168.108.145:27017')
rs.add('192.168.108.145:27018')
删除从服务器
rs.remove('192.168.108.145:27017')
rs.remove('192.168.108.145:27018')
然后进入从服务器,查看备份数据
rs.slaveOk()
后面再进行查找操作

实验的效果是当从的mongodb挂了的时候是卜影响项目的运行的,当主的mongodb挂了的时候,会自动在两个从的mongodb上面推选出一个主的mongodb,,这里mongodb必须是基数个,不然不能推选出主的mongodb,其实配置起来不难。

mongodb副本集配置的更多相关文章

  1. [Database] MongoDB 副本集配置

    MongoDB 副本集配置 MongoDB复制是将数据同步在多个服务器的过程. 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性. 复制还允许您从硬 ...

  2. MongoDB副本集配置系列五:副本集的在线迁移

    MongoDB副本集的在线迁移 查看当前集群的状态: { "setName" : "gechongrepl", "setVersion" : ...

  3. MongoDB副本集配置系列三:副本集的认证方式

    1:副本集配置参考这篇博客: http://www.cnblogs.com/xiaoit/p/4478951.html 2:副本集的认证 假设有两台机器已经配置好了副本集(副本集罪一般最少3台机器,这 ...

  4. 分布式文档存储数据库(MongoDB)副本集配置

    副本集特征: N 个节点的集群 任何节点可作为主节点 所有写入操作都在主节点上 自动故障转移 自动恢复 相关文章: http://www.cnblogs.com/huangxincheng/archi ...

  5. mongodb.副本集配置方法(使用keyfile认证部署)

    前提条件: - 已安装MongoDB, 版本以3.6为例 - 系统: Debian9 - 建议做副本集的话, 以3台以上为宜, 本文以1台主机2个服务为例 1.创建数据存放的目录, 并授权 sudo ...

  6. MongoDB副本集配置系列二:配置MongoDB副本集

    接上一篇博客: http://www.cnblogs.com/xiaoit/p/4479066.html 1:首先创建3台虚拟机作为配置环境 IP1:192.168.91.128 IP2:192.16 ...

  7. MongoDB 副本集配置,开启账号认证

    MongoDB 自带功能强大的主从,配置也很简单,从零开始花了30分钟搞定 3台以上机器IP: 192.168.1.24, 192.168.1.25, 192.168.1.26, 192.168.1. ...

  8. MongoDB副本集配置系列十一:MongoDB 数据同步原理和自动故障转移的原理

    1:数据同步的原理: 当Primary节点完成数据操作后,Secondary会做出一系列的动作保证数据的同步: 1:检查自己local库的oplog.rs集合找出最近的时间戳. 2:检查Primary ...

  9. MongoDB副本集配置系列十:MongoDB local库详解和数据同步原理

    1:local库是MongoDB的系统库,记录着时间戳和索引和复制集等信息 gechongrepl:PRIMARY> use local switched to db local gechong ...

随机推荐

  1. WebService学习总结

    因为最近开发的项目需求中涉及到了webservice,正好对这块知识以前学过但是又忘记了,于是想着从新学习下,整理一个笔记,便于后面的复习.于是有了本文,下面开始介绍webservice. 一.简介 ...

  2. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作

    redis简介 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis与其他key-value缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存 ...

  3. 网页如何展示PPT文档

    最近再做一个新项目,其中有一个难点,就是如何在网页上展示PPT,我网上找到了几种方法,但是真正符合我目前这个项目的就只有这一种方法了,       使用PowerPoint to Flash将ppt文 ...

  4. 前端面试题:css相关面试题

    CSS 选择器中,元素选择器和类选择器的区别是什么? 元素选择器是最常见的 CSS 选择器,即,文档的元素就是最基本的选择器.选择器通常是某个 HTML 元素,比如 <p>.<h1& ...

  5. SurfaceView 及相关概念

    ============================================================= SurfaceView=========================== ...

  6. JAVA基础2——类初始化相关执行顺序

    类初始化相关执行顺序 几个概念说明 代码块的含义与作用 static静态代码块: 一般用于初始化类中的静态变量.比如:给静态的数组或者list变量赋初值.使用static静态代码块进行初始化与直接在定 ...

  7. 【微服务】之二:从零开始,轻松搞定SpringCloud微服务系列--注册中心(一)

    微服务体系,有效解决项目庞大.互相依赖的问题.目前SpringCloud体系有强大的一整套针对微服务的解决方案.本文中,重点对微服务体系中的服务发现注册中心进行详细说明.本篇中的注册中心,采用Netf ...

  8. 数据库索引------Hash索引的使用限制

    1.hash索引必须进行二次查找. 2.hash索引无法进行排序. 3.hash索引不支持部分索引查找也不支持范围查找. 4.hash索引中hash码的计算可能存在hash冲突.

  9. Foxmail 7.0破解版,拷贝到新机器后,发送邮件乱码问题

    申请了新机器,挺开心,键盘和鼠标也好用了,但是新机器也随之而来一些不便,以前存储的数据需要重新拷贝.还有一些邮件,有些邮件标记了*号. Foxmail7.0绿色版本还挺好用,直接拷贝到新机器上就能直接 ...

  10. Cs Round#56 D Find Path Union

    题意:有一棵如下的完全二叉树,求所有给定结点到根节点的路径的并有多少条边. 一开始联想到线段树,发现结点的排布很像线段树的标号.于是模仿线段树敲了一下,交上去发现3个点MLE了... 无心优化,跑去看 ...