MongoDB搭建副本集(二)


         在上一篇博客中介绍了MongoDB复制和副本集的概念,这次将我查阅资料在单机下搭建的副本集展现给大家。

下面是在单机上搭建一个三个节点的副本集。一个主节点(primary,两个从节点(secondary,其中一个是仲裁者(arbiter)

环境:Ubuntu14.04MongoDB3.2


建立三个节点目录。

sudo mkdir /data
sudo mkdir /data/node1
sudo mkdir /data/node2
sudo mkdir /data/arbiter


运行三个节点,其中,replica是副本集的名称;端口号分别为10001,10002,10003,而10001为主节点的端口。

sudo /usr/local/mongodb/bin/mongod --replSet replica --dbpath /data/node1/ --port 10001 --oplogSize 1024 
sudo /usr/local/mongodb/bin/mongod --replSet replica --dbpath /data/node2/ --port 10002 --oplogSize 1024 
sudo /usr/local/mongodb/bin/mongod --replSet replica --dbpath /data/arbiter/ --port 10003 --oplogSize 1024 


另外打开一个shell,进入主节点。

sudo /usr/local/mongodb/bin/mongo localhost:10001

初始化副本集需要配置表并逐步添加节点的数据信息,_id和副本集启动的共享名称一致

config = {_id: "replica", members: []}
config.members.push({_id: 0, host: "localhost:10001"})
config.members.push({_id: 1, host: "localhost:10002"})
config.members.push({_id: 2, host: "localhost:10003", arbiterOnly: true})



初始化副本集


rs.initiate(config)

执行命令确认配置,可以看到10001的端口实例ismastertruesecondaryfalse,为主节点。hosts有两个实例,arbiters有一个实例。

rs.isMaster()

输入命令查看副本集的状态信息。

rs.status()



查看当前副本集的配置表

rs.conf()

插入测试数据:

for(i=1;i<=10;i++) {db.users.insert({"username":"user"+i})}

进入从节点10002,查看集合信息,显示查询失败,这是为了避免从节点读取到过期的数据。

sudo /usr/local/mongodb/bin/mongo localhost:10002 
show collections

设置标识并查询集合信息。

rs.slaveOk()
show collections


查询测试数据

<span style="font-size:12px;">db.users.find()</span>

在从节点插入数据,写入错误,不是主节点。

db.users.insert({username: "user11"}) 


进入端口10003,可以看到为仲裁节点。

sudo/usr/local/mongodb/bin/mongo localhost:10003

replica:ARBITER>

关掉10001端口的mongod实例,shell显示10001处于down状态,进入之前的从节点10002,发现它变成了主节点,提示符为

replica:PRIMARY>”,再将10001上线,它有恢复成主节点。这就是MongoDB副本集的故障转移。


         到这里,MongoDB单机搭建副本集就结束了,关于在多台机器上部署的例子会在以后的文章中给大家带来。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值