六:架构管理





mongodb的主从集群分为两种:

1:master-Slave 复制(主从)    --从server不会主动变成主server,须要设置才行

2:replica Sets 复制(副本集)  --假设主server挂掉,会选举出一台从server当主server



一:主从复制

mongodb支持在多个机器中通过异步复制达到故障转移和实现冗余。

  多机器中统一时刻仅仅有一台是用于写操作。正是因为这个情况,为mongodb提供了数据一致性的保障。

  担当primary角色的机器能把读操作分发给slave。

一主一从     一主多从方式

  

仅仅须要在某一个server启动时加上-master參数,而另外一个server加上-slave与-source參数,就可以实现同步。

mongodb的最新版本号已不推荐使用这样的方法 。

 

 開始模拟(直接开玩得,没实用户验证):

1:打开2个终端(安装2台mongodb数据库)

*--你能够再你同一台电脑上模拟。可是把dbpath logpath,相应的文件夹建上即可

mongodb/   下创建文件就(仅仅须要打开2个终端链接即可,不用安装多个mongodb数据库)

bin(mongodb自带的文件)  data1 data2 dblog1 dblog2    --1是主服务用的文件   2是从server用的文件

2:主(设置一台主server)

./mongod --master --dbpath=/usr/local/mongodb/data1/ --logpath=/usr/local/mongodb/dblog1 --fork --port 20001       (port开启一个相应的端口)

   

3:从  --source表示“源” ,链接那台server和port                

./mongod --slave --source 127.0.0.100:20001 --dbpath=/usr/local/mongodb/data2/ --logpath=/usr/local/mongodb/dblog2 --fork --port 20002       



  从:./mongo --port 20002



4: 主:./mongo --port 20001

  db.c1.insert({name:"user1"});

  db.c1.insert({name:"user2"});

5:从:会发现主创建的c1集合已经过来了

db.c1.find();

db.c1.insert({name:"user3"});   --在从server是插不进去的,会报错“not master”



为了降低主server的压力备份什么的能够再从server完毕(比方数据较大,一备份就是几十分钟明显增大主server的压力):

./mongodump --port 20002 -d test    备份test数据库



  **这样增删改的时候能够操作主server。读的时候链接从server

 

  

 

二:Replica Sets复制(副本集)

mongodb在1.6版本号中开发了replica set,主要是添加了故障自己主动切换和自己主动修复成员节点。各个DB之间

数据全然一致。最为显著的差别在于。副本集没有固定的主节点,它是整个集群选举出得到的一个主节点,当

其不工作是变更其它节点强烈推荐使用。

(主挂掉后会自己主动在从中选取出一个作为主server)



部署Replica Sets:

1):创建相应的文件  mongodb/(建立key 、 data 、 log目录)  --key是存同一个会议的小组成员,为选举主server用的

bin  key(建立钥匙文件:touch key1 、 touch key2)  data(下创建目录data1 、data2)   log(下创建目录dblog1 、 dblog2)



2): 在key文件夹下导入2个秘钥(linux的命令这个。win下的话能够自己手动建立)

echo "123456" >key1

echo "123456" >key2



chmod 600 *     --记住:这2把钥匙一定要设置成600 (key文件下操作)



3):准备完成。启动开玩(开启2个mongodb服务)

rs1 :表示定义一个小组,小组组号叫rs1,开会用的

./mongod --replSet rs1 --keyFile=/usr/local/mongodb/key/key1 --port 20001 --dbpath=/usr/local/mongodb/data/data1/ --logpath=/local/mongodb/log/dblog1 --fork



能后在启动一个:

./mongod --replSet rs1 --keyFile=/usr/local/mongodb/key/key2 --port 20002 --dbpath=/usr/local/mongodb/data/data2/ --logpath=/local/mongodb/log/dblog2 --fork





*副本集就已经启动了



4):2个成员会自己主动开会,如今建立下会议室的配置

./mongo --port 20001      ------>(20002也行,哪台机器都能够) 

 

配置建立副本集(小组清单):

config_rs1={  

_id:"rs1",

members:['

{_id:0,host:"localhost:20001",priority:1},     --表示优先级,数字越大优先级就越高,选举主server就更大

{_id:1,host:"localhost:20002",priority:2},

']

}   --回车,   config_rs1能够直接回车查看



初始化副本集配置(小组清单):

rs.initiate(config_rs1);   --回车 在回车,你会发现mongodb的  ">" 符号 变成 "SECONDARY>"(从)  或者  "PRIMARY>"(主)



为什么会变符号呢?(mongodb的  ">" 符号 变成 "SECONDARY>"(从)  或者  "PRIMARY>"(主)):

以为当你初始化副本集的时候,他们就在开会能后把localhost:20002选举为主server(priority数字越大优先级越高),

  所以localhost:20002被选举为主server"PRIMARY>"



5):数据測试

./mongo --port 20002   (主)

db.c1.insert({name:"user1"});

db.c1.insert({name:"user2"});

db.c1.find();

rs.status();   --查看副本集的状态



在登录从server(从server同步是的增删改的数据):

./mongo --port 20001

show tables;   --假设报错,说明你没权限,能后你敲下以下的命令

rs.slaveOk();  --副本集主从里面,从要想有主的读权限的时候敲下该命令,来确认你的身份是从server

show tables;   --就好使

db.c1.find();  --主的数据就能读到了

db.c1.insert({name:"user2"}); --副本集的主从也一样,不能再从里面插入数据,由于不是主server





故障转移:

要2台以上的mongodbserver哦。

副本集比传统的master-salve有改进的地方是它能够进行故障的自己主动转移

假设我们停掉复制集中的一个成员。那么剩下的成员就会自己主动选举出一个新的成员,做为主数据库

MongoDB 集群搭建(主从复制、副本及)(五)的更多相关文章

  1. MongoDB集群搭建之副本集模仿主从模式的行为

    #模拟主节点异常中断 [root@ba3b27d855f6 bin]# kill -9 199 [root@ba3b27d855f6 bin]#   #连接到其中一台备份节点 [root@ba3b27 ...

  2. MongoDB集群搭建-副本集

    MongoDB集群搭建-副本集 概念性的知识,可以参考本人博客地址: 一.Master-Slave方案: 主从: 二.Replica Set方案: 副本集: 步骤:(只要按步骤操作,100%成功) 1 ...

  3. mongodb集群搭建过程记录

    mongodb集群搭建花费比较长的时间,在此记录下过程,方便以后使用 一 软件环境 系统:ubuntu 18.04,mongodb 社区版4.2 https://docs.mongodb.com/ma ...

  4. Mongodb 集群搭建以及常见错误

    Mongodb 集群搭建以及常见错误 1 关于Replica Sets +Sharding(主从复制加分片)搭建,不这详细去说,网上有很多,大部分的例子就三台服务器之间做主从复制,分2个shard,架 ...

  5. Mongodb集群搭建之 Replica Set

    Mongodb集群搭建之 Replica Set Replica Set 中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的.其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了, ...

  6. MongoDB集群搭建-分片

    MongoDB集群搭建-分片 一.场景: 1,机器的磁盘不够用了.使用分片解决磁盘空间的问题. 2,单个mongod已经不能满足写数据的性能要求.通过分片让写压力分散到各个分片上面,使用分片服务器自身 ...

  7. MongoDB 3.6.9 集群搭建 - 切片+副本集

    1. 环境准备 在Mongo的官网下载Linux版本安装包,然后解压到对应的目录下:由于资源有限,我们采用Replica Sets + Sharding方式来配置高可用.结构图如下所示: 这里我说明下 ...

  8. mongodb集群搭建(分片+副本)

    原文地址:https://www.cnblogs.com/ityouknow/p/7344005.html 相关概念 先来看一张图: 从图中可以看到有四个组件:mongos.config server ...

  9. mongodb集群搭建(分片+副本)开启安全认证

    关于安全认证得总结: 这个讲述的步骤也是先创建超管用户,关闭服务,然后生成密钥文件,开启安全认证,启动服务 相关概念 先来看一张图: 从图中可以看到有四个组件:mongos.config server ...

  10. mongodb3.6集群搭建:分片+副本集

    mongodb是最常用的noSql数据库,在数据库排名中已经上升到了前五.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...

随机推荐

  1. EditPlus集成Java编译和运行命令组建轻量级Java SE开发工具

    http://www.gogogogo.me/development/EditPlus-Java.html

  2. C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求

    C# 动态创建SQL数据库(二) 使用Entity Framework  创建数据库与表 前面文章有说到使用SQL语句动态创建数据库与数据表,这次直接使用Entriy Framwork 的ORM对象关 ...

  3. iptalbes -F

    iptalbes -F -F, --flush [chain] Flush the selected chain (all the chains in the table if none is giv ...

  4. PMP_PMP考试须知

    考试报名 按照报名须知和填表指南中的要求提交报名材料同时交纳考试费用.北京地区的考生直接到国家外国专家局培训中心报名:外地考生到所在地报名点报名:未设有报名点的地区,可直接与国家外国专家局培训中心联系 ...

  5. 平衡二叉树AVL - 插入节点后旋转方法分析

    平衡二叉树 AVL( 发明者为Adel'son-Vel'skii 和 Landis)是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1. 首先我们知道,当插入一个节点,从此插入点到树根 ...

  6. Linux标识进程

    一.前言 其实两年前,本站已经有了一篇关于进程标识的文档,不过非常的简陋,而且代码是来自2.6内核.随着linux container.pid namespace等概念的引入,进程标识方面已经有了天翻 ...

  7. Python 字典 clear()方法

    描述 Python 字典 clear() 方法用于删除字典内所有元素. 语法 clear() 方法语法: D.clear() 参数 无. 返回值 该方法没有任何返回值. 实例 以下实例展示了 clea ...

  8. php 利用转转法去除重复数组

    w3scool学习地址 http://www.w3school.com.cn/tiy/s.asp?f=demo_php_func_array_flip 利用array键名不能重复的原理,使用两次 ar ...

  9. 在centos7中用mariadb代替了mysql数据库吗

    从最新版本的linux系统开始(如 Centos7),默认的是 Mariadb而不是mysql!(mysql被闭源厂家收购,有闭源风险) 使用系统自带的repos安装很简单: yum install ...

  10. js左侧三级菜单导航实例代码

    在左侧三级菜单导航想必大家都见到过吧,它的实现过程也并不复杂,下面有个不错的示例,感兴趣的朋友可以了解下 实例代码:   <!DOCTYPE html PUBLIC "-//W3C// ...