`
zzc1684
  • 浏览: 1188450 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Mongodb主从复制

阅读更多

主从复制是Mongodb最常用的复制方式。这种方式非常灵活,可用于备份、故障恢复、读扩展等。Mongodb主从结构如下图所示:

mongodb主从架构

最基本的方式就是建立一个主节点和一个或者多个从节点,每个从节点要知道主节点的地址。主节点服务器使用mongod --master方式启动,而从节点服务器则使用mongod --slave --source master_address方式启动。其中master_address指的是主节点服务器的地址。

 

一般主从节点是在多台服务器上,这里我通过在单台机器上建立多个实例来模拟主从复制。

首先建立主从节点数据目录:

Shell代码  收藏代码
  1. [root@localhost mongodb]# mkdir -p /opt/mongodb/data/dbs/master  
  2. [root@localhost mongodb]# mkdir -p /opt/mongodb/data/dbs/slave  

然后配置主从节点的配置文件(也可以通过参数直接启动)

mongodb-master.conf(主节点配置文件)

Shell代码  收藏代码
  1. port=10000  
  2. dbpath=data/dbs/master  
  3. logpath=log/mongodb-master.log  
  4. logappend=true  

mongodb-slave.conf(从节点配置文件)

Shell代码  收藏代码
  1. port=10001  
  2. dbpath=data/dbs/slave  
  3. logpath=log/mongodb-slave.log  
  4. logappend=true  

接着分别启动主节点服务和从节点服务:

1)启动主节点服务

Shell代码  收藏代码
  1. [root@localhost mongodb]# ./bin/mongod -f mongodb-master.conf --master  
  2. all output going to: log/mongodb-master.log  

2)启动从节点服务(注意需要使用--source参数指定主服务的地址)

Shell代码  收藏代码
  1. [root@localhost mongodb]# ./bin/mongod -f mongodb-slave.conf --slave --source localhost:10000  
  2. all output going to: log/mongodb-slave.log  

然后连接到主节点

Shell代码  收藏代码
  1. [root@localhost mongodb]# ./bin/mongo localhost:10000  
  2. MongoDB shell version: 2.0.6  
  3. connecting to: localhost:10000/test  
  4. > db.users.find() #查询主节点users集合中的数据,结果返回为空  
  5. >   

使用另外一个连接连接到从节点

Shell代码  收藏代码
  1. [root@localhost mongodb]# ./bin/mongo localhost:10001  
  2. MongoDB shell version: 2.0.6  
  3. connecting to: localhost:10001/test  
  4. > db.users.find() #查询从节点users集合中的数据,结果也返回为空  
  5. >  

往主节点users集合中插入数据

Shell代码  收藏代码
  1. #首先往users集合中插入数据  
  2. > db.users.save({"name":"zhouxiaofei","position":"Web tester"})  
  3. > db.users.save({"name":"chenzhou","position":"Java developer"})  
  4. > db.users.find() #查询主节点users集合中数据,返回如下结果  
  5. "_id" : ObjectId("502a83750e192a4a90d0f6c1"), "name" : "zhouxiaofei""position" : "Web tester" }  
  6. "_id" : ObjectId("502a837c0e192a4a90d0f6c2"), "name" : "chenzhou""position" : "Java developer" }  
  7. >   

通过另外一个连接从节点的实例查询从节点中users集合中的数据

Shell代码  收藏代码
  1. > db.users.find() #查询从节点中users集合,返回了主节点中插入的数据  
  2. "_id" : ObjectId("502a83750e192a4a90d0f6c1"), "name" : "zhouxiaofei""position" : "Web tester" }  
  3. "_id" : ObjectId("502a837c0e192a4a90d0f6c2"), "name" : "chenzhou""position" : "Java developer" }  
  4. >   

根据结果可以看出,简单的主从复制已经实现。关于Mongodb主从复制更多的知识,可以参考mongodb在线文档,地址如下:http://www.mongodb.org/display/DOCS/Master+Slave

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics