实战MongoDB-Replication之Master-Slave
实战MongoDB
Replica Set
MongoDB支持不同服务之间的异步的数据复制,来实现failover(故障转移,故障切换,故障恢复) and redundancy(数据冗余)。
同一时间,只有一个服务节点(primary或者master)支持写入。
MongoDB支持两种复制的模式:
- Master/Slave,主从复制,角色包括master和slave。
- 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表明。
启动服务可以从命令行一个一个参数的指定,也可以将参数存放在一个文件中,然后启动的时候指定这个文件为服务的配置文件。后见的方法便于管理和维护,推荐使用。
首先配置主服务。
- port=30000
- ddbpath=d:\mongodb\master1
- directoryperdb=true
- logpath=d:\mongodb\master1\log.log
- logappend=true
- master=true
- bind_ip=192.168.0.111
配置的参数如上所示,将上面的参数拷贝到一个文件中,起名【master1.conf】,然后使用下面的命令启动主服务。
- d:\mongodb\bin\mongod --config=d:\mongodb\master1\master1.conf
上面是windows里面启动的命令。
如果是ubuntu中使用,假设conf文件存放在/home/andyshi/master1/目录下,将conf文件内容修改如下。
- port=30000
- dbpath=/home/andyshi/master1
- directoryperdb=true
- logpath=/home/andyshi/master1/log.log
- logappend=true
- master=true
- bind_ip=192.168.0.111
使用下面的命令启动主服务。
- mongod --conf=/home/andyshi/master1/master1.conf
大家注意到了,主要区别就是目录的地方,注意一下就可以了。
接下来就可以使用mongo这个客户端测试我们配置的结果了,或者使用python+pymongo也可以测试,顺便熟悉一下python+pymongo的使用。
我们的客户端测试环境使用ubuntu+python2.7+pymongo2.1。
在终端中输入
- mongo 192.168.0.111:30000
指定IP(或者是名称)和端口号,由于要进行写入,需要连入主服务。尝试写入下面的数据。
- //切换到test数据库
- use test
- //插入数据
- db.book.insert({'author':'shiwenbin'})
- //查看插入是否成功
- db.test.find()
插入成功之后,这时候我们连上其中一个从服务,看看是否存在同样的数据。
- mongo 192.168.0.111:30001
- use test
- show collections
- db.book.find()
如果没有问题,会发现30001这个从服务中同样的位置也存在同样的数据,说明复制成功,配置没有问题。
建立主从关系之后,在主服务的local数据库中会有一个slaves集合,存放的就是当前主服务的所有从服务。
相应的,在从服务的local数据库中会有一个sources集合,存放的是当前slave的master信息,也就是配置文件中的source参数指定的信息。
查看集合可以先使用
- use local
use命令切换到local数据库,然后使用
- show collections
show命令查看local数据库的所有集合。
诊断功能
在master上使用
- db.printReplicationInfo()
可以打印出第一次同步事件的时间,最后一次的同步事件时间,和当前的时间。
在slave上使用
- db.printSalveReplicationInfo()
可以打印出master的地址和上一次同步的时间。
安全
如果启动mongod服务的时候,指定了需要安全验证(使用auth)参数,那么就需要在master和slave的local数据库中都添加同样的用户。
- use local
- db.addUser('user1','123.com')
addUser命令有三个参数,第一个登陆账号,第二个是密码,第三个是是否只读,是可选参数,默认值是false。也就是说不指定readonly参数的话,添加的用户是具有写权限的,通过指定readonly=true添加的用户是只读用户。
利用master-slave可以实现读写分离,写走master,读走slave。但是有一点遗憾就是,如果master挂了,就不能进行写入操作了,只能从slave读取数据。这时候需要手动的停掉一个slave,然后修改启动参数,启动为master,同时需要更新其他slave指向这个新的master。
转载于:https://blog.51cto.com/virusswb/792657
实战MongoDB-Replication之Master-Slave相关推荐
- MongoDB学习笔记——Master/Slave主从复制
Master/Slave主从复制 主从复制MongoDB中比较常用的一种方式,如果要实现主从复制至少应该有两个MongoDB实例,一个作为主节点负责客户端请求,另一个作为从节点负责从主节点映射数据,提 ...
- mysql主从切换机制torch_MySQL Replication设置(Master/Slave)实现主从复制
一.Master配置 1.my.cnf配置 # vim /etc/mysql/mariadb.conf.d/50-server.cnf [mysqld] log-bin=mysql-bin //[必须 ...
- mongoDB-3.x Master Slave Replication
mongoDB-3.x Master Slave Replication 官方文档: https://docs.mongodb.org/manual/core/master-slave/ https: ...
- Docker下,实战mongodb副本集(Replication)
在<Docker下,极速体验mongodb>一文中我们体验了单机版的mongodb,实际生产环境中,一般都会通过集群的方式来避免单点故障,今天我们就在Docker下实战mongodb副本集 ...
- mysql (master/slave)复制原理及配置
1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
- Master/Slave知识
1.master上授权给slave mysql>grant all on *.* to repadmin@'218.6.67.75' identified by 'backup'; mysql& ...
- Mysql的master,slave的配置
MYSQL的master,slave环境的搭建<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:off ...
- 适合MySQL master/slave模式的JDBC driver: lbpool
去年写了篇MySQL分表实现上百万上千万记录分布存储的批量查询设计模式的文章,思路是基于MySQL手动分表的.缺点是增加了程序的复杂性.现在有一个更简单和方便的现成的产品了,那就是lbpool lbp ...
- Redis(八):Redis的复制(Master/Slave)
Redis的复制(Master/Slave)目录导航: 是什么 能干嘛 怎么玩 复制原理 哨兵模式(sentinel) 复制的缺点 是什么 官网 行话:也就是我们所说的主从复制,主机数据更新后根据配置 ...
- redis主从复制_Redis 的主从复制(Master/Slave)
1. 是什么 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略自动同步到备机的 master/slave 机制,Master以写为主,Slave 以读为主 2. 能干嘛 数据冗余:主从复制 ...
最新文章
- C段渗透攻击必看的技术知识
- 程序员面试题精选100题(29)-调整数组顺序使奇数位于偶数前面[算法]
- UidGenerator
- win7系统中出现“ 驱动器c中的卷没有标签...”的问题
- 指针 数组指针 指针数组 函数指针等说明。
- C#如何无客户端连接Oracle数据库
- 21天学通JAVA:类设计的技巧
- 「备战春招/秋招」美团Java面经总结终结篇(附详解答)
- python股票_十分钟学会用Python交易股票
- 笔试题目:升级装备题
- 公主与骑士-ZZUOJ
- 某网站cookie加密黑盒调用与算法还原
- PHP ‘Array and string offset access syntax with curly braces is deprecated’ 错误的原因和解决办法...
- 显卡,就是一个男人对自己的交待
- Swift入门笔记(二)
- TP-Link家用路由器上网与防蹭网
- 跬智信息(Kyligence)荣获浦东新区人工智能创新应用大赛一等奖
- 火讯财经创始人龙典受访36氪:“数藏云”为中小品牌提供一站式NFT数字藏品解决方案
- 微博生态圈盈利模式分析
- 记一次计通项目(网元设计)(更新中)