实战MongoDB-Replication之Master-Slave-阿里云开发者社区

开发者社区> 像教授> 正文

实战MongoDB-Replication之Master-Slave

简介:
+关注继续查看

实战MongoDB

Replica Set

 

MongoDB支持不同服务之间的异步的数据复制,来实现failover(故障转移,故障切换,故障恢复) and redundancy(数据冗余)。

同一时间,只有一个服务节点(primary或者master)支持写入。

MongoDB支持两种复制的模式:

  1. Master/Slave,主从复制,角色包括master和slave。
  2. Replica Set,复制集复制,角色包括primary和secondary。

 

介绍Master/Slave的官方地址:

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

介绍Replica Set的官方地址:

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

 

今天实战的是master-slave,也就是主从复制。

首先使用mongod启动服务,关于启动的参数可以从http://www.mongodb.org/display/DOCS/Command+Line+Parameters页面找到相关的介绍。

其中关于主从复制的参数常用的是下面几个:

--master,指明当前服务是主。

--slave,指明当前服务是从。

--source,指明主服务的地址,格式为server:port。

--only <db>,指明当前从只复制主的指定数据库,数据库名称用db表明。

 

启动服务可以从命令行一个一个参数的指定,也可以将参数存放在一个文件中,然后启动的时候指定这个文件为服务的配置文件。后见的方法便于管理和维护,推荐使用。

 

首先配置主服务。


  1. port=30000 
  2. ddbpath=d:\mongodb\master1 
  3. directoryperdb=true 
  4. logpath=d:\mongodb\master1\log.log 
  5. logappend=true 
  6. master=true 
  7. bind_ip=192.168.0.111 

配置的参数如上所示,将上面的参数拷贝到一个文件中,起名【master1.conf】,然后使用下面的命令启动主服务。

 


  1. d:\mongodb\bin\mongod --config=d:\mongodb\master1\master1.conf 

上面是windows里面启动的命令。

如果是ubuntu中使用,假设conf文件存放在/home/andyshi/master1/目录下,将conf文件内容修改如下。

 


  1. port=30000 
  2. dbpath=/home/andyshi/master1 
  3. directoryperdb=true 
  4. logpath=/home/andyshi/master1/log.log 
  5. logappend=true 
  6. master=true 
  7. bind_ip=192.168.0.111 

使用下面的命令启动主服务。

 


  1. mongod --conf=/home/andyshi/master1/master1.conf 

大家注意到了,主要区别就是目录的地方,注意一下就可以了。

接下来就可以使用mongo这个客户端测试我们配置的结果了,或者使用python+pymongo也可以测试,顺便熟悉一下python+pymongo的使用。

我们的客户端测试环境使用ubuntu+python2.7+pymongo2.1。

在终端中输入

 


  1. mongo 192.168.0.111:30000

指定IP(或者是名称)和端口号,由于要进行写入,需要连入主服务。尝试写入下面的数据。

 


  1. //切换到test数据库 
  2. use test 
  3. //插入数据 
  4. db.book.insert({'author':'shiwenbin'}) 
  5. //查看插入是否成功 
  6. db.test.find() 

插入成功之后,这时候我们连上其中一个从服务,看看是否存在同样的数据。

 


  1. mongo 192.168.0.111:30001 
  2.  
  3. use test 
  4. show collections 
  5. db.book.find() 

如果没有问题,会发现30001这个从服务中同样的位置也存在同样的数据,说明复制成功,配置没有问题。

建立主从关系之后,在主服务的local数据库中会有一个slaves集合,存放的就是当前主服务的所有从服务。

相应的,在从服务的local数据库中会有一个sources集合,存放的是当前slave的master信息,也就是配置文件中的source参数指定的信息。

查看集合可以先使用

 


  1. use local 

use命令切换到local数据库,然后使用

 


  1. show collections 

show命令查看local数据库的所有集合。

 

诊断功能

在master上使用

 


  1. db.printReplicationInfo() 

可以打印出第一次同步事件的时间,最后一次的同步事件时间,和当前的时间。

在slave上使用

 


  1. db.printSalveReplicationInfo() 

可以打印出master的地址和上一次同步的时间。

 

安全

如果启动mongod服务的时候,指定了需要安全验证(使用auth)参数,那么就需要在master和slave的local数据库中都添加同样的用户。

 


  1. use local 
  2. db.addUser('user1','123.com') 

addUser命令有三个参数,第一个登陆账号,第二个是密码,第三个是是否只读,是可选参数,默认值是false。也就是说不指定readonly参数的话,添加的用户是具有写权限的,通过指定readonly=true添加的用户是只读用户。

利用master-slave可以实现读写分离,写走master,读走slave。但是有一点遗憾就是,如果master挂了,就不能进行写入操作了,只能从slave读取数据。这时候需要手动的停掉一个slave,然后修改启动参数,启动为master,同时需要更新其他slave指向这个新的master。




本文转自 virusswb 51CTO博客,原文链接:http://blog.51cto.com/virusswb/792657,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
独家下载 | Cassandra实战指南 探索云计算与AI浪潮下的下一个职业风口
Apache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,2008年开源后,由于Cassandra良好的可扩展性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。
21121 0
Spring Data MongoDB实战(上)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/48015457 Spring Data MongoDB实战(上) 作者:chszs,版权所有,未经同意,不得转载。
659 0
实战 | canal 实现Mysql到Elasticsearch实时增量同步
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
5182 0
《数据分析实战 基于EXCEL和SPSS系列工具的实践》一第2章 数据分析的理论、工具、模型
记得在我上研究生的时候,曾经有一位老师问我,什么是足球的“越位”?我很奇怪他为什么问这个问题,他说看世界杯转播老是在说越位,但他不知道啥意思。而我上大学的时候特别喜欢踢球,大学毕业之后也经常踢球,所以“越位”对我来说再简单不过了,只是没想到一位智力超群、知识渊博的大学老师却并不知晓,所以这件事给我留下了深刻的印象。
1947 0
MongoDB Spark Connector 实战指南
Why Spark with MongoDB? 高性能,官方号称 100x faster,因为可以全内存运行,性能提升肯定是很明显的 简单易用,支持 Java、Python、Scala、SQL 等多种语言,使得构建分析应用非常简单 统一构建 ,支持多种数据源,通过 Spark RDD 屏蔽底层数据差异,同一个分析应用可运行于不同的数据源; 应用场景广泛,能同时支持批处理以及流式处理 MongoDB Spark Connector 为官方推出,用于适配 Spark 操作 MongoDB 数据;本文以 Python 为例,介绍 MongoDB Spark Connector 的使用,帮助你基于 M
37 0
Asp.net MVC 2 + Castle + NHibernate 项目实战(1)
本文将开始一步一步地使用Asp.net MVC 2 + Castle + NHibernate 开发一个项目。   在开始之前,我先对这三个组件做一个简单的介绍:  Asp.net MVC  它是微软提供的一个基于MVC标准的Web开发模式,其典型特点是有控制器和视图;在这之前,.NET下的Web开发模式大多是采用WebForm,其典型特点是服务端控件和后台触发事件;   NHibernate 它是一个ORM框架,使用Java的SSH做过项目开发的人就非常熟悉了,当前最新版本为NHibernate 3.0,听说完全支持Linq查询语句了,以前只支持HQL语句。
719 0
+关注
1028
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载