准备工作:创建目录

 mkdir -p /home/m17 //home/m18 /home/m19 /home/mlog

1:启动3个实例,且声明实例属于某复制集

 # ./bin/mongod --dbpath /home/m17 --logpath /home/mlog/m17.log --fork --port  --replSet rs2 --smallfiles
# ./bin/mongod --dbpath /home/m18 --logpath /home/mlog/m18.log --fork --port --replSet rs2 --smallfiles
# ./bin/mongod --dbpath /home/m19 --logpath /home/mlog/m19.log --fork --port --replSet rs2 --smallfiles

注:--smallfiles 最小文件创建实例

2:配置复制级

 var rsconf = {
_id:'rs2',
members:
[
{_id:,
host:'127.0.0.1:27017'
},
{_id:,
host:'127.0.0.1:27018'
},
{_id:,
host:'127.0.0.1:27019'
} ]
}
 > printjson(rsconf)
{
"_id" : "rs2",
"members" : [
{
"_id" : ,
"host" : "127.0.0.1:27017"
},
{
"_id" : ,
"host" : "127.0.0.1:27018"
},
{
"_id" : ,
"host" : "127.0.0.1:27019"
}
]
}

3: 根据配置做初始化

 > rs.initiate(rsconf)
;
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" :
}
rs2:SECONDARY> rs.status();
{
"set" : "rs2",
"date" : ISODate("2016-05-26T00:43:57Z"),
"myState" : ,
"members" : [
{
"_id" : ,
"name" : "127.0.0.1:27017",
"health" : ,
"state" : ,
"stateStr" : "SECONDARY",
"uptime" : ,
"optime" : Timestamp(, ),
"optimeDate" : ISODate("2016-05-26T00:43:11Z"),
"self" : true
},
{
"_id" : ,
"name" : "127.0.0.1:27018",
"health" : ,
"state" : ,
"stateStr" : "STARTUP2",
"uptime" : ,
"optime" : Timestamp(, ),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2016-05-26T00:43:54Z"),
"lastHeartbeatRecv" : ISODate("2016-05-26T00:43:52Z"),
"pingMs" :
},
{
"_id" : ,
"name" : "127.0.0.1:27019",
"health" : ,
"state" : ,
"stateStr" : "STARTUP2",
"uptime" : ,
"optime" : Timestamp(, ),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2016-05-26T00:43:44Z"),
"lastHeartbeatRecv" : ISODate("2016-05-26T00:43:53Z"),
"pingMs" :
}
],
"ok" :
}

4: 添加节点

 rs2:PRIMARY> rs.add('127.0.0.1:27018')
{ "down" : [ "127.0.0.1:27018" ], "ok" : }
rs2:PRIMARY> rs.status
function () { return db._adminCommand("replSetGetStatus"); }
rs2:PRIMARY> rs.status()
{
"set" : "rs2",
"date" : ISODate("2016-05-26T00:51:01Z"),
"myState" : ,
"members" : [
{
"_id" : ,
"name" : "127.0.0.1:27017",
"health" : ,
"state" : ,
"stateStr" : "PRIMARY",
"uptime" : ,
"optime" : Timestamp(, ),
"optimeDate" : ISODate("2016-05-26T00:50:53Z"),
"self" : true
},
{
"_id" : ,
"name" : "127.0.0.1:27019",
"health" : ,
"state" : ,
"stateStr" : "SECONDARY",
"uptime" : ,
"optime" : Timestamp(, ),
"optimeDate" : ISODate("2016-05-26T00:50:53Z"),
"lastHeartbeat" : ISODate("2016-05-26T00:51:00Z"),
"lastHeartbeatRecv" : ISODate("2016-05-26T00:50:59Z"),
"pingMs" : ,
"lastHeartbeatMessage" : "syncing to: 127.0.0.1:27017",
"syncingTo" : "127.0.0.1:27017"
},
{
"_id" : ,
"name" : "127.0.0.1:27018",
"health" : ,
"state" : ,
"stateStr" : "SECONDARY",
"uptime" : ,
"optime" : Timestamp(, ),
"optimeDate" : ISODate("2016-05-26T00:50:53Z"),
"lastHeartbeat" : ISODate("2016-05-26T00:50:59Z"),
"lastHeartbeatRecv" : ISODate("2016-05-26T00:51:00Z"),
"pingMs" : ,
"lastHeartbeatMessage" : "syncing to: 127.0.0.1:27017",
"syncingTo" : "127.0.0.1:27017"
}
],
"ok" :
}

5:查看状态

 rs.status();

6:删除节点

 rs2:PRIMARY> rs.remove('127.0.0.1:27018');
Thu May ::36.621 DBClientCursor::init call() failed
Thu May ::36.621 Error: error doing query: failed at src/mongo/shell/query.js:
Thu May ::36.622 trying reconnect to 127.0.0.1:
Thu May ::36.622 reconnect 127.0.0.1: ok
rs2:PRIMARY> rs.status();
{
"set" : "rs2",
"date" : ISODate("2016-05-26T00:49:38Z"),
"myState" : ,
"members" : [
{
"_id" : ,
"name" : "127.0.0.1:27017",
"health" : ,
"state" : ,
"stateStr" : "PRIMARY",
"uptime" : ,
"optime" : Timestamp(, ),
"optimeDate" : ISODate("2016-05-26T00:49:36Z"),
"self" : true
},
{
"_id" : ,
"name" : "127.0.0.1:27019",
"health" : ,
"state" : ,
"stateStr" : "SECONDARY",
"uptime" : ,
"optime" : Timestamp(, ),
"optimeDate" : ISODate("2016-05-26T00:49:36Z"),
"lastHeartbeat" : ISODate("2016-05-26T00:49:38Z"),
"lastHeartbeatRecv" : ISODate("2016-05-26T00:49:37Z"),
"pingMs" : ,
"lastHeartbeatMessage" : "syncing to: 127.0.0.1:27017",
"syncingTo" : "127.0.0.1:27017"
}
],
"ok" :
}

7:主节点插入数据

 rs2:PRIMARY> show dbs
local .029296875GB
rs2:PRIMARY>
rs2:PRIMARY>
rs2:PRIMARY> use test
switched to db test
rs2:PRIMARY>
rs2:PRIMARY> db.stu.insert({title:'hello'});
rs2:PRIMARY>
rs2:PRIMARY>
rs2:PRIMARY> show tables;
stu
system.indexes

8:连接secondary查询同步情况

 # ./bin/mongo -port
MongoDB shell version: 2.4.
connecting to: 127.0.0.1:/test
rs2:SECONDARY> use test
switched to db test
rs2:SECONDARY> show tables
Thu May ::57.272 error: { "$err" : "not master and slaveOk=false", "code" : } at src/mongo/shell/query.js:

8.1 出现上述错误,是因为slave默认不许读写

 rs2:SECONDARY> rs.slaveOk();
rs2:SECONDARY> show tables
stu
system.indexes
rs2:SECONDARY> db.stu.find();
{ "_id" : ObjectId("57464a73c79dad862e06cd3b"), "title" : "hello" }

#看到与primary 一致的数据

 9 主节点down机器 ,primary节点自动漂移

 rs2:PRIMARY> use admin
switched to db admin
rs2:PRIMARY> db.shutdownServer();
Thu May ::33.316 DBClientCursor::init call() failed rs2:SECONDARY> rs.status()
{
"set" : "rs2",
"date" : ISODate("2016-05-26T01:19:38Z"),
"myState" : ,
"syncingTo" : "127.0.0.1:27018",
"members" : [
{
"_id" : ,
"name" : "127.0.0.1:27017",
"health" : ,
"state" : ,
"stateStr" : "(not reachable/healthy)",
"uptime" : ,
"optime" : Timestamp(, ),
"optimeDate" : ISODate("2016-05-26T00:59:32Z"),
"lastHeartbeat" : ISODate("2016-05-26T01:19:38Z"),
"lastHeartbeatRecv" : ISODate("2016-05-26T01:19:33Z"),
"pingMs" :
},
{
"_id" : ,
"name" : "127.0.0.1:27019",
"health" : ,
"state" : ,
"stateStr" : "SECONDARY",
"uptime" : ,
"optime" : Timestamp(, ),
"optimeDate" : ISODate("2016-05-26T00:59:32Z"),
"errmsg" : "syncing to: 127.0.0.1:27018",
"self" : true
},
{
"_id" : ,
"name" : "127.0.0.1:27018",
"health" : ,
"state" : ,
"stateStr" : "PRIMARY",
"uptime" : ,
"optime" : Timestamp(, ),
"optimeDate" : ISODate("2016-05-26T00:59:32Z"),
"lastHeartbeat" : ISODate("2016-05-26T01:19:38Z"),
"lastHeartbeatRecv" : ISODate("2016-05-26T01:19:36Z"),
"pingMs" : ,
"syncingTo" : "127.0.0.1:27017"
}
],
"ok" :
}

MongoDB基础之九 replication复制集的更多相关文章

  1. MongoDB for OPS 02:复制集 RS 配置

    写在前面的话 对于生产环境而言,除非是非常不重要的业务,且该业务允许我们出现一定时间的停机,我们一般才会使用单节点,且该单节点必须要有完善的备份手段. RS 复制集 我们这里采取一主两从的方式搭建复制 ...

  2. MongoDB DBA 实践4-----创建复制集

    一.复制 复制允许多个数据库服务器共享相同数据的功能,从而确保冗余并促进负载平衡 1.数据冗余及可用性 复制技术提供数据冗余及可用性,在不同的数据库服务器上使用多个数据副本,复制技术防止单个数据库服务 ...

  3. 02 . MongoDB复制集,分片集,备份与恢复

    复制集 MongoDB复制集RS(ReplicationSet): 基本构成是1主2从的结构,自带互相监控投票机制(Raft(MongoDB)Paxos(mysql MGR 用的是变种)) 如果发生主 ...

  4. MongoDB复制集

    1.1 MongoDB复制集简介 一组Mongodb复制集,就是一组mongod进程,这些进程维护同一个数据集合.复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础. 1.1.1 复制集的目的 ...

  5. Windows 下MongoDB复制集配置

    1.下载服务.https://www.mongodb.com/   点击products 下拉第二列MongoDB server  选择 4.0.6 2.下载下来后 有限管理员运行 一路安装,可以不用 ...

  6. MongoDB学习4:MongoDB复制集机制和原理,搭建复制集

    1.复制集的作用   1.1 MongoDB复制集的主要意义在于实现服务高可用   1.2 它的实现依赖于两个方面的功能:    · 数据写入时将数据迅速复制到另一个独立节点上    · 在接收写入的 ...

  7. mongodb 复制集

    mongodb 复制集 复制集简介 Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写 ...

  8. 关于 MongoDB 复制集

    为什么要使用复制集 1.备份数据通过自带的 mongo_dump/mongo_restore 工具也可以实现备份,但是毕竟没有复制集的自动同步备份方便. 2.故障自动转移部署了复制集,当主节点挂了后, ...

  9. MongoDB 复制集节点增加移除及节点属性配置

    复制集(replica Set)或者副本集是MongoDB的核心高可用特性之一,它基于主节点的oplog日志持续传送到辅助节点,并重放得以实现主从节点一致.再结合心跳机制,当感知到主节点不可访问或宕机 ...

随机推荐

  1. 电池和Adapter切换电路改进实验(转)

    源:电池和Adapter切换电路改进实验 目的:很多单电池的机器在大负载的情况下,如把背光开到最亮,运行3D游戏,此时拔DC电源很容易出现机器死机,或花屏现象: 原因:Q5的导通时间不够,希望通过G极 ...

  2. (简单) POJ 2750 Potted Flower,环+线段树。

    Description The little cat takes over the management of a new park. There is a large circular statue ...

  3. linux动态链接库---一篇讲尽

    一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如: tmux: error while loading shared libraries: libevent-1.4.s ...

  4. ARM裸机开发中内存管理库RT_HEAP的使用

    在使用arm芯片进行裸机开发的时候,很多时候都需要内存管理的功能,我们可以使用自己写的内存管理程序,也可以直接使用标准库,不过我一般比较喜欢标准库,速度快,今天就来说说在C语言环境下怎么样进行内存的动 ...

  5. CDOJ 1268 Open the lightings

    组合数学题.好难啊,请教了Xiang578大神&&看了他题解才会的...... 甩上题解链接:http://blog.csdn.net/xinag578/article/details ...

  6. 关于JAVA中hashCode

    hash code 即散列码根据对象计算出的一个整型值,散列码是没有规律的. 如果两个对象相等(equal() 返回true),则hashCode一定相等,如果两个对象hashCode相等,则对象不一 ...

  7. FZU 2112 Tickets

    这个问题可以转变一下,先要知道有几个连通块,连通块之间肯定需要添加一条边, 还需要知道每个连通块内部需要添加几条边,这个问题等价于求一张图至少需要几笔画成,这个问题的答案是度为奇数的点的个数/2 #i ...

  8. XCode 7上传遇到ERROR ITMS-90535 Unexpected CFBundleExecutable Key. 的解决办法

    去第三方的info.plist文件中,比如TencentOpenApi_IOS_Bundle.bundel 的info.plist ,删除 executable file 这一行

  9. jQuery插件的开发

    jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...

  10. Word中的公式向上偏或向下偏的解决方法

    在word 2010中,发现公式无法与文字排成一行时,可选中文字,然后点“字体”,然后“高级”选项中选择“位置”,然后根据不同情况选择“标准”.“提升”.“降低”.