`
san_yun
  • 浏览: 2663293 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

MongoDB的Replication简单介绍

 
阅读更多

 

1. 什么是Replication

数据复制是为了使数据得到最大的可用性,避免单点故障的发生,MongoDB支持在服务器之间进行数据的异步复制,来满足数据的最终一致性。但是同 一时刻只有一台服务器是可以写的。当只有一台master时,数据的强一致性就可以得到保障。但当用户从slaves上去读数据时,这里只能保障数据的最 终一致性。目前MongoDB提供了三种Replication方式,Matser/Matser, Matser/Slave,Replica Sets

 

replication

注意:

如果你使用的是v1.6版本以下的MongoDB,你可能使用前两种模式,第三种模式在v1.6.0版本中才提供。另外,v1.6.0版本的Replic Sets还不支持--auth这个参数,不过在v1.7.0版本中就提供了。

 

2. Replica Sets介绍与配置

Replica sets是一种结合了Master/Slave模式与自动数据容错、自动恢复的综合体。Replica sets也是"Replica Pairs version 2"。

2.1 特点

  • 在集群中支持1-7台服务器
  • 自动数据容错与恢复
  • 对数据中心敏感
  • 对多个slave的支持

2.2 简单配置

一个Replica set是一组mongod节点的集成,每个节点上的数据都是冗余的,以此来保证数据的可用性。

一般配置一个两步,启动Replica set集合中的每一个节点,再对其建立关系。这里我们用三个节点来做

 

建立数据库目录与启动服务:

mkdir -p /data/r0
mkdir -p /data/r1
mkdir -p /data/r2
mongod --replSet foo --port 27017 --dbpath /data/r0
mongod --replSet foo --port 27017 --dbpath /data/r1
mongod --replSet foo --port 27017 --dbpath /data/r2

 

建立相应的关系:

这时你要登陆到其中的一个节点上去,运行如下命令

mongo localhost:27017
[kyle@arete ~$]$ mongo localhost:27017
MongoDB shell version: 1.5.7
connecting to: localhost:27017/test
> config = {_id: 'foo', members: [
         {_id: 0, host: 'localhost:27017'},
         {_id: 1, host: 'localhost:27018'},
         {_id: 2, host: 'localhost:27019'}]
  }
> rs.initiate(config);
{
  "info" : "Config now saved locally.  Should come online in about a minute.",
  "ok" : 1
}

 

你可以用如下命令显示其状态:

> rs.status()
{
"set" : "foo",
"date" : "Mon Aug 02 2010 11:39:08 GMT-0400 (EDT)",
"myState" : 1,
"members" : [
{
"name" : "arete.local:27017",
"self" : true,
},
{
"name" : "localhost:27019",
"health" : 1,
"uptime" : 101,
"lastHeartbeat" : "Mon Aug 02 2010 11:39:07 GMT-0400",
},
{
"name" : "localhost:27018",
"health" : 1,
"uptime" : 107,
"lastHeartbeat" : "Mon Aug 02 2010 11:39:07 GMT-0400",
}
],
"ok" : 1
}
 

2.3 动态加入节点

打开一个MongoDB服务

$ ./mongod --replSet foo  

 登陆到已经存在的Replica Sets的主节点上去,运行如下命令

 

$ ./mongo
MongoDB shell version: ...
connecting to: test
> rs.add("broadway:27017");
{ "ok" : 1 }

 添加完以后,它会运行相应的数据同步操作。

 

3. Master/Slave的介绍与配置

这是一种最普通的数据复制方式,一般要启动两个服务,一个是Master,另一个是Slave

3.1 启动方法

$ bin/mongod --master [--dbpath /data/masterdb/]
$ bin/mongod --slave --source <masterhostname>[:<port>]  [--dbpath /data/slavedb/]

 其中要注意的是Master有一个参数叫--oplogSize,它是指定编辑日志的大小,这个日志是用来对slave进行数据同步用的,默认是磁盘的5%。

 

4. 两种复制方式的区别

Replica Sets主要是提供一种节点出故障后的自动选举功能,就是当这个set中的primary故障后,它会自动选举出一个节点做为primary,而不是整个set变成只读的。

replica set可以通过如下配置方式来模拟Master/Slave模式

 

$ # run mongod instances with "--replSet mysetname" parameter
$ # then in the shell:
$ mongo --host M
> cfg = {
>   _id : 'mysetname',
>   members : [
>     { _id : 0, host : 'M', priority : 1 },
>     { _id : 1, host : 'S', priority : 0, votes : 0 }
>   ]
> };
> rs.initiate(cfg);
 

5. 参考

http://blog.csdn.net/amuseme_lu/article/details/6219422

http://www.mongodb.org/display/DOCS/Replica+Sets

http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial

http://www.mongodb.org/display/DOCS/Master+Slave

分享到:
评论

相关推荐

    mongoDB Replication 复制模式搭建官网文档

    MongoDB的复制模式(Replication)是一种多数据库服务器协同工作的机制,其目的是为数据提供冗余并提高数据的可用性。复制在分布式数据库系统中扮演着至关重要的角色,它确保在一台服务器出现问题时,其他服务器能够...

    MongoDB 安装包 —— 单服务器的副本集(Replication)配置(单服务器:Windows)

    MongoDB 安装包 ,包含了单服务器的副本集(Replication)配置(单服务器:Windows)

    MongoDB-replication-guide.pdf

    - **将独立服务器转换为复制集**: 介绍如何将现有的独立 MongoDB 服务器转换为复制集的一部分。 - **向复制集添加成员**: 讲述如何向已存在的复制集中添加新的成员节点。 - **从复制集中移除成员**: 说明如何安全地...

    MongoDB介绍

    5. **复制集(Replication)**:MongoDB的复制集功能可以创建数据副本,提供高可用性和故障恢复能力。在一个复制集中,如果有主节点故障,其他副本可以自动接管,确保服务不中断。 6. **聚合框架**:MongoDB提供了...

    mongdb副本集结构的配置

    MongoDB是一种分布式文档数据库,广泛应用于现代Web应用、大数据分析和实时数据存储。副本集(Replica Set)是MongoDB中的高可用性解决方案,通过在多个节点之间复制数据,确保了数据的冗余和容错性。下面我们将深入...

    MongoDB之conf配置文件详解

    在本文中,我们将详细介绍MongoDB的配置文件的各个部分,并解释每个设置的作用和意义。 一、数据库文件位置(dbpath) MongoDB的数据库文件位置是指mongodb数据文件的存储路径。这个设置非常重要,因为它将影响...

    MongoDB内核源码分布式事务介绍.pdf

    MongoDB内核源码分布式事务介绍 分布式事务是现代数据库系统中的一大挑战,MongoDB 作为Modern Database,需要解决分布式事务问题。本文将介绍MongoDB 内核源码分布式事务的技术创新和实现原理。 MongoDB 的高层...

    liunux centos系统mongodb3.2.0的压缩包

    MongoDB 支持分片(Sharding)和复制集(Replication),以实现水平扩展和数据冗余。分片允许将大型数据集分布在多个机器上,而复制集则提供高可用性,当主节点故障时,副本节点可以接管。 以上就是在 CentOS 系统...

    真实可用的mongodb下周地址.txt

    01-mongodb文档型数据库特点介绍 01-NoSQL简介 02-mongodb安装过程 02-mongodb操作1 03-mongodb操作2 03-mongo库表操作语句 04-CURD操作详解 04-mongodb操作3 05-回顾 05-深入查询表达式 06-索引的使用 ...

    Mastering MongoDB 3.x

    Addressing the limitations of SQL schema-based databases, MongoDB pioneered a shift of focus for DevOps and offered sharding and replication maintainable by DevOps teams. The book is based on MongoDB...

    MongoDB_two_MongoDB_

    8. Replication与Sharding:MongoDB的复制集可以提供高可用性和数据冗余,而分片则用于水平扩展以处理大量数据,这两者是大型MongoDB部署的关键组成部分。 9. GridFS:当单个文档大小超过16MB时,MongoDB使用GridFS...

    MongoDB简介与实践.pdf

    4. MongoDB介绍: MongoDB是一种面向文档(Document)的NoSQL数据库,支持多平台如Windows、Linux、Mac OS X、FreeBSD等,并且其核心是用C++实现的Solaris。MongoDB提供多语言驱动支持,包括Ruby/Ruby-on-Rails、Java...

    MongoDB主从环境搭建

    MongoDB是一种流行的开源文档数据库系统,它以其高性能、高可用性和可扩展性而备受赞誉。在企业级应用中,为了确保数据的安全性和服务的连续性,通常会采用主从复制(Replication)架构。主从环境搭建是MongoDB高...

    Zabbix MongoDB监控模板.xml

    4. **应用(Applications)**:将相关的监控项组织成逻辑上的应用组,如"MongoDB Replication"、"MongoDB Memory"等,方便管理和查看。 三、模板导入与配置 1. **导入模板**:在Zabbix服务器端,通过Web界面导入...

    单台windows搭建mongoDb主从集群

    1. **主从复制(Replication)**: MongoDB的主从复制是其高可用性架构的基础,通过复制数据到多个节点,确保即使主节点故障,从节点也能接管服务,保证数据不丢失。 2. **单台Windows系统**:尽管MongoDB推荐在多台...

    Linux下MongoDB安装包

    本压缩包提供了MongoDB 3.2版本的Linux安装包,下面将详细介绍如何在Linux系统中安装和部署MongoDB 3.2。 首先,确保你的Linux系统满足MongoDB 3.2的最低硬件和软件要求。MongoDB 3.2支持多种Linux发行版,包括...

    MongoDB官方文档

    复制是数据库提供高可用性的机制之一,在MongoDB中称为Replication。文档中的复制介绍部分会阐述复制的基本概念和复制的工作原理。复制教程部分提供了复制集的搭建和管理的详细步骤。复制参考部分则针对复制相关的...

    MongoDB面试专题

    目录: 1.MongoDB 成为最好 NoSQL 数据库...8.分片(sharding)和复制(replication)是怎样工作的? 9.我怎么查看 Mongo 正在使用的链接? 10.MongoDB 在 A:{B,C}上建立索引,查询 A:{B,C}和 A:{C,B}都会使用索引吗? ......

    MongoDB;学习资料

    9. **驱动程序(Driver)**:MongoDB有多种官方和社区支持的驱动程序,如Python、Java、Node.js等,使得在不同编程语言中与MongoDB交互变得简单。 10. **MongoDB工具**:MongoDB提供了一系列工具,如`mongo` shell...

    MongoDB-2.0.6-安装文件及源码

    在2.0.6版本中,已经具备了一定的分片(sharding)和复制集(replication)功能。 4. **自动分片**:MongoDB能够自动将数据分散到多个物理节点上,以实现水平扩展,处理海量数据。 5. **复制集**:复制集是MongoDB...

Global site tag (gtag.js) - Google Analytics