Mongodb主从复制

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

mongodb主从架构

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

 

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

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

[root@localhost mongodb]# mkdir -p /opt/mongodb/data/dbs/master
[root@localhost mongodb]# mkdir -p /opt/mongodb/data/dbs/slave

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

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

port=10000
dbpath=data/dbs/master
logpath=log/mongodb-master.log
logappend=true

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

port=10001
dbpath=data/dbs/slave
logpath=log/mongodb-slave.log
logappend=true

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

1)启动主节点服务

[root@localhost mongodb]# ./bin/mongod -f mongodb-master.conf --master
all output going to: log/mongodb-master.log

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

[root@localhost mongodb]# ./bin/mongod -f mongodb-slave.conf --slave --source localhost:10000
all output going to: log/mongodb-slave.log

然后连接到主节点

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

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

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

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

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

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

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

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

你可能感兴趣的:(mongodb,mongo,NoSQL,master,主从)