`

学习MongoDB(四)——Master/Slave模式

阅读更多

Master和Slave数据库做到数据同步,在Master节点上能进行任何数据操作,而Slave节点只能读取从Master节点同步的数据,不能进行数据插入等操作。

官方的配置说明:http://www.mongodb.org/display/DOCS/Master+Slave

测试环境:两台机器,192.168.1.193和192.168.1.192,两太电脑都是Mac系统。192.168.1.193上的MongoDB作为Master,192.168.1.192作为Slave。

Master机器上启动数据库:

mongod --dbpath=/mongodata/masterdb --master --oplogSize 64 --port 5566

--master:以master模式启动数据库。

--oplogSize:指定master上用于存放更改的数据量,如果不指定,在32位机上最少为50M,在64位机上最少为 1G,最大为磁盘空间的5%。

Slave机器上启动数据库:

mongod --slave --source 192.168.1.193:5566 --dbpath=/mongodata/slavedb --port 5567 --slavedelay 10 --only test --autoresync

--slave:以从服务器方式启动
--autoresync:自动重新sync,因为该操作会copy 主服务器上的所有document,比较耗时,在10分钟内最多只会进行一次。
--source:主服务器地址

--only:仅限于同步指定数据库(下面示例为test库)
--slavedelay:同步延时,复制检测的间隔

登陆Master数据库:

mongo 192.168.1.193:5566
> use test 
> db.col.save({a:'another',b:'yst'})
> db.col.find() 
{ "_id" : ObjectId("5066b52ecd2a0101aca559f8"), "a" : "another", "b" : "yst" }

登陆Slave数据库:

mongo 192.168.1.192:5567
> use test 
> db.col.save({a:'bu',b:'yst2'})
not master
> db.col.find() 
{ "_id" : ObjectId("5066b52ecd2a0101aca559f8"), "a" : "another", "b" : "yst" }

在Slave只能进行数据读取,save时会提示not master 。可以看到,在Master上save的数据,在slave中可以查询到了。

再来看看用安全认证模式启动Master和Slave的情况:

启动数据库时添加--auth参数就可以了。Master机器:

mongod --dbpath=/mongodata/masterdb --master --oplogSize 64 --port 5566 --auth

 Slave机器:

mongod --slave --source 192.168.1.193:5566 --dbpath=/mongodata/slavedb --port 5567 --slavedelay 10 --only test --autoresync --auth

怎么添加用户呢,官方文档里面已经说的很清除了,向Master和Slave的local数据库中都添加一样的用户

Master机器:

mongo 192.168.1.193:5566/admin -u masteradmin -p masterpwd
> use local
> db.addUser("repl","123456")

Slave机器:

mongo 192.168.1.192:5567/admin -u slaveadmin -p slavepwd
> use local
> db.addUser("repl","123456")

好了,Master和Slave添加完用户之后,都已授权的安全模式启动数据库,"repl“这个用户登陆Master就像amdin用户一样,能进行各种操作了。"repl”登陆Slave同样不能进行任何更改数据的操作,只能读取。 

登陆Master:

mongo 192.168.1.193:5566/local -u repl  -p 123456
> use test
switched to db test
> db.foo.find() 
{ "_id" : ObjectId("5066b52ecd2a0101aca559f8"), "a" : "another", "b" : "yst" }
> db.foo.save({a:'you',b:'va2'}) 
> use newdb
switched to db newdb 
> db.food.save({y:'kk'}) 
> db.food.remove()
> db.food.find()

"repl”和admin用户差不多,不仅对test数据库操作,还能操作其他不是和Slave共享的数据库。

登陆Slave:

mongo 192.168.1.192:5567/local -u repl  -p 123456 
> use test
switched to db test
> db.foo.find() 
{ "_id" : ObjectId("5066b52ecd2a0101aca559f8"), "a" : "another", "b" : "yst" }
{ "_id" : ObjectId("5066ce3c297ef262708bdf4d"), "a" : "you", "b" : "va2" }
> db.foo.save({a:'houhou',b:'us'})
not master

repl登陆Slave只能对test数据库进行查询操作。 

分享到:
评论

相关推荐

    数据库-Mongodb的master-slave模式与master-master模式实验.rar

    MongoDB是一种流行的开源文档型数据库,以其灵活性、可扩展性和高性能而受到许多开发者的青睐。...请参考"数据库-Mongodb的master-slave模式与master-master模式实验.pdf"文件,详细学习并实践这些概念。

    mongodb 数据库基本操作.doc

    ### MongoDB数据库基本操作详解 #### 一、连接MongoDB数据库 MongoDB是一个广泛使用的开源文档数据库,支持多种编程语言。为了能够与MongoDB交互并执行各种数据库操作,首先需要通过官方提供的驱动程序或其他第三...

    MongoDB的Master-Slave主从模式配置及主从复制要点解析

    MongoDB的Master-Slave主从模式是一种常见的数据复制策略,用于实现数据的备份和负载均衡。在这种模式中,一个MongoDB实例作为主节点(Master),负责处理所有的写操作,而其他的实例作为从节点(Slave),复制主...

    MongoDb的”not master and slaveok=false”错误及解决方法

    使用mongodb时,出现“not master and slaveok=false”错误,原因是secondary不允许读写。 因为系统中mongodb做了主备,主备切换了,也可能导致这个问题。 把命令mongo –username=root –password=123456 –host=...

    30分钟学MongoDB系列 ——MongoDB的安全机制和高级管理篇

    MongoDB是当前流行的NoSQL数据库之一,它支持高性能、高可用性和易扩展的特性。在处理海量数据时,MongoDB提供了很多高级管理功能来确保数据的安全性和一致性。本篇将重点介绍MongoDB的安全机制和高级管理功能,包括...

    linux安装mongodb教程

    /usr/local/mongodb/mongodb-linux-2.0.7/bin/mongod --dbpath=/usr/local/mongodb/data/db --logpath=/usr/local/mongodb/mongodb-linux-2.0.7/logs/mongodb.log --logappend --port=27017 --fork 知识点 6:配置...

    30分钟学MongoDB系列——限定集与大文件存储篇

    MongoDB是一种流行的NoSQL数据库,它以灵活的文档模型和高性能而广受欢迎。本次讨论的是MongoDB中的限定集(Capped Collections)和大文件存储(GridFS)两个特色功能。 首先,限定集是MongoDB中一种特殊的集合类型...

    30分钟学MongoDB系列——分布式架构分片(Sharding)

    MongoDB是一个高性能、开源且模式自由的NoSQL数据库,它采用分布式架构进行设计,以支持大规模数据存储和处理。其中,分片(Sharding)是MongoDB中非常重要的分布式特性之一,它能够帮助数据库管理系统实现数据的...

    Linux安装mongodb客户端

    sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo 写入: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpg...

    mongodb安装集群

    ./mongodb/bin/mongod --shardsvr --replSet shard2 --port 22002 --dbpath /data/mongodb/shard2/data --logpath /data/mongodb/shard2/log/shard2.log --fork --nojournal --oplogSize 10 ``` 3. **启动 shard3 ...

    30分钟学MongoDB系列——Mongo分布式架构篇(简介)

    MongoDB,一款NoSQL数据库管理系统,在业界内以其高效和灵活著称。本文将详细探讨其分布式架构,首先我们会讨论分布式架构与云技术之间的联系,然后分析分布式架构的应用场景,并最终讲述MongoDB如何应用于云存储和...

    Mongodb_集群分片部署

    在集群分片部署中,我们可以根据需要选择不同的架构,如 Master/Slave 模式、Replica Sets 模式等。 在选择架构时,需要考虑到实际情况,如数据的一致性、故障转移、安全性等。mongDB 官方提供了以下意见:如果使用...

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

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

    CentOS(Linux)离线安装MongoDB7.0详细教程(亲测可行)

    ### CentOS (Linux) 离线安装 MongoDB 7.0 详细教程 #### 一、前言 在一些特定的网络环境下,如内网或专网中,由于无法直接访问互联网资源,传统的在线安装方式不可行。对于这种情况,本文将详细介绍如何在 CentOS...

Global site tag (gtag.js) - Google Analytics