MongoDB 集群搭建(主从复制、副本及)(五)

六:架构管理

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有改进的地方是它能够进行故障的自己主动转移

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

时间: 2024-08-24 03:46:32

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

MongoDB集群搭建-副本集

MongoDB集群搭建-副本集 概念性的知识,可以参考本人博客地址: http://www.cnblogs.com/zlp520/p/8088169.html 一.Replica Set方案(副本集或复制集): 1.搭建副本集有两种办法: 其一:在一台服务器上,通过文件的方式及端口号的方式来区分: 其二:找最少三台服务器,每台服务器都通过如下的配置: ip规划每台服务器担任的工作: 192.168.0.100:27017 主机 192.168.0.101:27017 副本集 192.168.0.

Replica Set副本集方式的mongodb集群搭建

1.环境: 单台服务器上开启四个mongodb实例来实现mongodb的Replica Set副本集方式的集群搭建 2.配置文件: master主实例配置文件: [[email protected] ~]# cat /usr/local/mongodb/mongod.cnf logpath=/data/mongodb-master/logs/mongodb.log logappend = true #fork and run in background fork = true port = 27

mongodb集群搭建

mongodb集群有三种方式 1,主从模式,类似mysql master slave方式. 2,副本集模式,其实是一主多从,如果主节点挂掉,会重新在从节点选取一台为主节点. 3,分片模式,针对大数据量,高负载情况. 从图中可以看到有四个组件:mongos.config server.shard.replica set. mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它负责把对应的数据请求请求转发

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

mongodb是最常用的noSql数据库,在数据库排名中已经上升到了前五.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置服务器等.相关概念mongodb集群架构图: 从图中可以看到有四个组件:mongos.config server.shard.replica set.mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它

利用Docker部署mongodb集群--分片与副本集

环境 Docker version 1.6.2  mongodb 3.0.4 第一步  编写Dockerfile并生成镜像 主意包含两个Dockerfile镜像,一个mongod的,一个mongos(在集群中负责路由) 编写Mongod的Dockerfile: FROM ubuntu:14.04 RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 ENV MONGO_MAJOR 3.0 RUN ech

Mongodb集群搭建的三种方式

Mongodb是时下流行的NoSql数据库,它的存储方式是文档式存储,并不是Key-Value形式.关于Mongodb的特点,这里就不多介绍了,大家可以去看看官方说明:http://docs.mongodb.org/manual/ 今天主要来说说Mongodb的三种集群方式的搭建:Replica Set / Sharding / Master-Slaver.这里只说明最简单的集群搭建方式(生产环境),如果有多个节点可以此类推或者查看官方文档.OS是Ubuntu_x64系统,客户端用的是Java客

MongoDB集群部署(副本集模式)

一.需求背景1.现状描述(1).针对近期出现的mongodb未授权的安全问题,导致mongodb数据会被非法访问.应安全平台部的要求,需要对所有mongodb进行鉴权设置,目前活动侧总共有4台,用于某XX产品: (2).某XX产品用到4台mongodb,属于2015年机房裁撤的范围: (3).早期的4台mongodb采用是的M1机型,同时在架构上采取了路由分片的模式.从目前来看,无论是数据量上,还是访问量上,都比较小,在资源上有点浪费,在架构上属于过早设计. 而本次新建的mongodb集群,采用

mongodb集群搭建步骤

搭建mongodb集群很多次,每次都会或多.或少出现一些见鬼的问题,写这边博客供以后参考. 本次是基于mongodb3.0进行集群的搭建:搭建步骤如下: 1.设置操作系统的环境 echo "never">"/sys/kernel/mm/transparent_hugepage/enabled" echo "never">"/sys/kernel/mm/transparent_hugepage/defrag" uli

Mongodb集群架构之副本集

本文介绍了热门的NoSQL数据库MongoDB的副本集这种分布式架构的一些概念和操作.主要内容包括: MongoDB副本集相关概念 MongoDB副本集环境搭建 MongoDB副本集的读写分离 MongoDB副本集的故障转移 MongoDB副本集的优点 MongoDB副本集的缺点 1.副本集相关概念 主节点. 在一个副本集中,只有唯一一个主节点.主节点可以进行数据的写操作和读操作.副本集中各个节点的增伤改等配置必须在主节点进行. 从节点. 在一个副本集中,可以有一个或者多个从节点.从节点只允许读