简单主从复制

  • 采用一主一从或一主多从的布署模式,可以将读写分离开来,提高数据库的可用性,不过mongodb的主从模式并不能在主节点崩溃后,从节点替换主节点的工作,一般可以在开发阶段使用。

实现步骤

  • 设置配置文件
# mongodb.conf1 # 主节点

dbpath=/var/lib/mongodb1 # 设置数据文件
#where to log
logpath=/var/log/mongodb/mongodb1.log # 设置日志文件 logappend=true bind_ip = 127.0.0.1,192.168.1.21 # 设置ip
port = 27018 # 设置port
journal=true master = true # 设置主节点 # mongodb.conf2 # 从节点
dbpath=/var/lib/mongodb2 # 设置数据文件
#where to log
logpath=/var/log/mongodb/mongodb2.log # 设置日志文件 logappend=true bind_ip = 127.0.0.1,192.168.1.21 # 设置ip
port = 27019 # 设置port
journal=true slave = true # 设置从节点
source = 192.168.1.21:27018 # 指定主节点
  • 使用配置文件启动
# 启动主节点
mongod -f /etc/mongodb.conf1 &
# 启动从节点
mongod -f /etc/mongodb.conf2 &
  • 测试发现,从节点可读不可写,主节点杀死后,从节点不能代替主节点。

副本集

  • 定义:复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性。

  • 特点:

  1. 主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。

  2. 所有节点分成3类,主节点,从节点和仲裁节点。

  3. 默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务;

  4. 自动故障转移

  5. 自动恢复

实现步骤

  • 设置三份配置文件,分别为主节点、从节点、仲裁节点配置
# mongodb.conf
dbpath=/var/lib/mongodb # 数据文件
logpath=/var/log/mongodb/mongodb.log # 日志文件
pidfilepath=/var/lib/mongodb/mongodb.pid # 进程文件
logappend=true # 添加方式
replSet=name # 设置副本集名称
bind_ip=192.168.1.21 # 绑定ip
port=27017 # port
fork=true # 后台运行
noprealloc=true # mongodb.conf1
dbpath=/var/lib/mongodb1 # 数据文件
logpath=/var/log/mongodb/mongodb1.log # 日志文件
pidfilepath=/var/lib/mongodb/mongodb1.pid # 进程文件
logappend=true # 添加方式
replSet=name # 设置副本集名称
bind_ip=192.168.1.21 # 绑定ip
port=27018 # port
fork=true # 后台运行
noprealloc=true # mongodb.conf2
dbpath=/var/lib/mongodb2 # 数据文件
logpath=/var/log/mongodb/mongodb2.log # 日志文件
pidfilepath=/var/lib/mongodb/mongodb2.pid # 进程文件
logappend=true # 添加方式
replSet=name # 设置副本集名称
bind_ip=192.168.1.21 # 绑定ip
port=27019 # port
fork=true # 后台运行
noprealloc=true
  • 启动节点
mongo -f /etc/mongodb.conf
mongo -f /etc/mongodb1.conf
mongo -f /etc/mongodb2.conf
  • 配置节点
mongo ip:port
use admin
fuben={ _id:"name", members:[ {_id:0,host:'192.168.1.21:27017',priority:2}, {_id:1,host:'192.168.1.21:27018',priority:1},
{_id:2,host:'192.168.1.21:27019',arbiterOnly:true}] };
rs.initiate(fuben)

参数:

priority:优先级

arbiterOnly:仲裁节点

  • 有时报错
"errmsg" : "couldn't initiate : member 192.168.1.21:27018 has data already, cannot initiate set.  All members except initiator must be empty."

# 需要清空数据库,将数据库文件都删除
  • 生效后,从节点目前是不允许读写的,设置:
# 登录从节点
rs.slaveOk();
  • 杀死主节点,可以看到从节点变为主节点,重新启动主节点后,主节点还是主节点,不会变为从节点(老大永远是老大);

参考:

MongoDB之主从复制和副本集(四)的更多相关文章

  1. MongoDB的主从复制和副本集

    mongoDB的两个特性主从复制和副本集,实现了数据的同步备份 一.主从复制 主从复制是一个简单的数据库同步备份的集群技术.例如主服务器宕机了,可以直接使用从服务器,主服务器恢复后在进行同步,保证了业 ...

  2. MongoDB主从复制和副本集

    MongoDB有主从复制和副本集两种主从复制模式,主从复制最大的问题就是无法自动故障转移,MongoDB副本集解决了主从模式无法自动故障转义的特点,因此是复制的首选.对于简单的主从复制无法自动故障转移 ...

  3. MongoDB 删除,添加副本集,并修改副本集IP等信息

    MongoDB 删除,添加副本集,并修改副本集IP等信息 添加副本,在登录到主节点下输入 rs.add("ip:port"); 删除副本 rs.remove("ip:po ...

  4. MongoDB 带访问控制的副本集部署

    当你需要用到一个MongoDB 副本集集群,用于开发测试时, 可以通过下面的步骤简单完成. 版本及环境 MongoDB4.4  Centos6.5  一. 下载安装 MongoDB Server 及 ...

  5. 8.MongoDB系列之创建副本集(一)

    1. 复制简介 在MongoDB中,创建副本集后就可以使用复制功能了,副本集是一组服务器,其中一个是用于处理写操作的主节点,还有多个用于保存主节点的数据副本的从节点,如果主节点崩溃了,则从节点会从中选 ...

  6. Mongodb主从复制 及 副本集+分片集群梳理

    转载努力哥原文,原文连接https://www.cnblogs.com/nulige/p/7613721.html 介绍了Mongodb的安装使用,在 MongoDB 中,有两种数据冗余方式,一种 是 ...

  7. MongoDB 3.0 常见集群的搭建(主从复制,副本集,分片....)

      一.mongodb主从复制配置 主从复制是mongodb最常用的复制方式,也是一个简单的数据库同步备份的集群技术,这种方式很灵活.可用于备份,故障恢复,读扩展等. 最基本的设置方式就是建立一个主节 ...

  8. MongoDB 学习笔记(七):主从复制与副本集

    一.主从复制 1.主从复制是一个简单的数据库同步备份的集群技术,如下图:要明确的知道主服务器与从服务器,且从服务器要明确的知道主服务器的存在. 2.在MongoDB中在启动数据库服务时,可以用mast ...

  9. Mongodb 主从复制与副本集实验

    1.实验主从复制,并验证复制成功,抓图实验过程  Step1:创建相应的目录 Mkdir -p ./dbs/master Mkdir -p ./dbs/slave Step2:开启主服务 ./bin/ ...

随机推荐

  1. DBGRID控件里可以实现SHIFT复选吗?怎么设置?

    //////////////////////////////////////////////////    功能概述:公用的列表框选择框,是用DBGrid网格////    注意事项:希望用Query ...

  2. 【EF】EF框架 Code First Fluent API

    在Code First方法中,还可以通过Fluent API的方式来处理实体与数据表之间的映射关系. 要使用Fluent API必须在构造自定义的DbContext时,重写OnModelCreatin ...

  3. HDU4678_Mine

    很有意思,很好的题目. 这样的,一个n*m的扫雷地图,告诉你哪些地方是有雷的.一个人如果点在了空白处,那么与其相邻的(八个方向)的数字以及空白都会递归地显示出来,如果点在数字上面,那么就只会显示这一个 ...

  4. 解数独(Python)

    0.目录 1.介绍 2.一些通用函数 3.全局变量(宏变量) 4.数独预处理(约束传播) 5.解数独(深度优先搜索+最小代价优先) 6.主函数 7.总代码 1.介绍 数独是一个非常有趣味性的智力游戏, ...

  5. 【洛谷】CYJian的水题大赛【第二弹】解题报告

    点此进入比赛 T1: JerryC Loves Driving 第一题应该就是一道水分题(然而我只水了130分),我的主要做法就是暴力模拟,再做一些小小的优化(蠢得我自己都不想说了). My Code ...

  6. [SHOI2011]双倍回文 manacher

    题面: 洛谷:[SHOI2011]双倍回文‘ 题解: 首先有一个性质,本质不同的回文串最多O(n)个. 所以我们可以对于每个i,求出以这个i为结尾的最长回文串,然后以此作为长串,并判断把这个长串从中间 ...

  7. 【CF600E】Lomsat gelral(dsu on tree)

    [CF600E]Lomsat gelral(dsu on tree) 题面 洛谷 CF题面自己去找找吧. 题解 \(dsu\ on\ tree\)板子题 其实就是做子树询问的一个较快的方法. 对于子树 ...

  8. 【BZOJ2763】飞行路线(最短路)

    [BZOJ2763]飞行路线(最短路) 题面 BZOJ Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标 ...

  9. sz与rz命令

    一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地:   与ssh ...

  10. 温习classList api

    有道题是一个removeClass的功能,代码里是正则分隔了传入的name,根据name的个数,循环移除掉,让寻找bug..看了了这几行代码,首先想到的是我会如何去优化. 如果看代码一两分钟就能找到公 ...