mongodb副本集
2013-10-10 18:36
519 查看
一、节点类型
standard:常规节点,它存储一份完整的数据副本,参与选举投票,有可能成为活跃节点。
passive:存储了完整的数据副本,参与投票,不能成为活跃节点。
arbiter:仲裁节点,只参与投票,不接收复制的数据,也不能成为活跃节点。
二、主从复制的集群还是有两点区别的。
<1>: 该集群没有特定的主数据库。
<2>: 如果哪个主数据库宕机了,集群中就会推选出一个从属数据库作为主数据库顶上,这就具备了自动故障恢复功能
注:
1、不需要像mysql一样复制完整数据过去,丛库启动会制动复制主库完整数据。
2、丛库自动配置为只读。
3、mongodb第一次启动时间较长,需要注意等待。
4、管理命令多数都要在admin库中执行use admin
三、创建副本集
1. 环境说明:
ip:192.168.1.228 (初始计划设定其为master)
ip:192.168.1.227 (初始计划设定其为slave)
ip:192.168.1.229 (初始计划设定其为arbiter ,即仲裁服务器)
2. 为副本集取名weijh
配置229启动文件:
配置228启动文件:
配置227启动文件:
配置结束后,重启服务
3、 在浏览器打开链接
http://192.168.1.228:28017/
http://192.168.1.229:28017/
看到我们需要初始化节点
4、初始化节点
我们连接到其中一个节点上,并使用replSetInitiate命令进行初始化。此命令需要一个配置对象,指定设定的每个成员的名字。
在228节点上进行初始化(随便连接一下哪个服务器都行,不过一定要进入admin集合)
1)执行命令:
出现错误:
2)清除数据库下所有新创建的数据库信息
3)再次执行命令
5、查看状态:
浏览器主节点查看:
浏览器从节点关键信息查看:
6、添加仲裁节点
我们在admin集合中使用rs.addArb()追加即可
查看状态:
该仲裁节点不参与数据的复制,只是参与投票选择主节点而已
在该节点为not reachable/healthy的状态下是起不到投票主节点的作用的。删除227服务琪上的db文件,重启
查看状态:
添加仲裁节点成功
7、在主节点添加数据:
从节点查看数据信息
在从节点228上可以同步到主节点的数据信息,但无法查看
8、228主几点宕掉,查看229状态
可以看到229 从secondary变味primary了
9、启动228,但是228不再为primary了,而为secondary了
10、首先这是正常的,因为SECONDARY是不允许读写的, 在写多读少的应用中,使用Replica Sets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。对于replica set 中的secondary 节点默认是不可读的:
若需要SECONDARY可以执行读的操作,在SECONDARY执行slaveok方法
执行查询操作测试:
参考资料网页:
http://xuezaijiongtu.blog.163.com/blog/static/19757627120122153627331/
http://blog.csdn.net/liuyuanshijie/article/details/6735625
http://www.2cto.com/database/201307/228444.html
standard:常规节点,它存储一份完整的数据副本,参与选举投票,有可能成为活跃节点。
passive:存储了完整的数据副本,参与投票,不能成为活跃节点。
arbiter:仲裁节点,只参与投票,不接收复制的数据,也不能成为活跃节点。
二、主从复制的集群还是有两点区别的。
<1>: 该集群没有特定的主数据库。
<2>: 如果哪个主数据库宕机了,集群中就会推选出一个从属数据库作为主数据库顶上,这就具备了自动故障恢复功能
注:
1、不需要像mysql一样复制完整数据过去,丛库启动会制动复制主库完整数据。
2、丛库自动配置为只读。
3、mongodb第一次启动时间较长,需要注意等待。
4、管理命令多数都要在admin库中执行use admin
三、创建副本集
1. 环境说明:
ip:192.168.1.228 (初始计划设定其为master)
ip:192.168.1.227 (初始计划设定其为slave)
ip:192.168.1.229 (初始计划设定其为arbiter ,即仲裁服务器)
2. 为副本集取名weijh
配置229启动文件:
dbpath=/usr/data/mongodb/data/db port=27017 logpath=/usr/data/mongodb/log/mongodb.log logappend=true journal=true fork=true replSet=weijh/192.168.1.228
配置228启动文件:
dbpath=/usr/data/mongodb/data/db port=27017 logpath=/usr/data/mongodb/log/mongodb.log logappend=true journal=true fork=true replSet=weijh/192.168.1.229
配置227启动文件:
dbpath=/usr/data/mongodb/data/db port=27017 logpath=/usr/data/mongodb/log/mongodb.log logappend=true journal=true fork=true replSet=weijh/192.168.1.228
配置结束后,重启服务
3、 在浏览器打开链接
http://192.168.1.228:28017/
http://192.168.1.229:28017/
看到我们需要初始化节点
4、初始化节点
我们连接到其中一个节点上,并使用replSetInitiate命令进行初始化。此命令需要一个配置对象,指定设定的每个成员的名字。
在228节点上进行初始化(随便连接一下哪个服务器都行,不过一定要进入admin集合)
1)执行命令:
出现错误:
2)清除数据库下所有新创建的数据库信息
3)再次执行命令
5、查看状态:
浏览器主节点查看:
09:57:02 [ReplSetHealthPollTask] replSet info 192.168.1.229:27017 is up 09:57:02 [ReplSetHealthPollTask] replSet member 192.168.1.229:27017 STARTUP2 09:57:02 [rs Manager] replSet info electSelf 1 09:57:02 [rs Manager] replSet PRIMARY 09:57:04 [initandlisten] connection accepted from 192.168.1.229:46257 #7 09:57:04 [initandlisten] connection accepted from 192.168.1.229:46258 #8 09:57:04 [conn8] end connection 192.168.1.229:46258 09:57:04 [initandlisten] connection accepted from 192.168.1.229:46259 #9 09:57:04 [conn9] end connection 192.168.1.229:46259 09:57:04 [ReplSetHealthPollTask] replSet member 192.168.1.229:27017 RECOVERING 09:57:04 [conn7] end connection 192.168.1.229:46257 09:57:05 [initandlisten] connection accepted from 192.168.1.229:46260 #10 09:57:06 [ReplSetHealthPollTask] replSet member 192.168.1.229:27017 SECONDARY 09:57:06 [slaveTracking] building new index on { _id: 1 } for local.slaves
浏览器从节点关键信息查看:
09:57:03 [ReplSetHealthPollTask] replSet member 192.168.1.228:27017 PRIMARY 09:57:04 [replica set sync] ****** 09:57:04 [replica set sync] replSet initial sync pending 09:57:04 [replica set sync] replSet syncing to: 192.168.1.228:27017 09:57:04 [replica set sync] building new index on { _id: 1 } for local.me 09:57:04 [dur] lsn set 139505 09:57:04 [replica set sync] done for 0 records 0.045secs 09:57:04 [replica set sync] replSet initial sync drop all databases 09:57:04 [replica set sync] dropAllDatabasesExceptLocal 1 09:57:04 [replica set sync] replSet initial sync clone all databases 09:57:04 [replica set sync] replSet initial sync cloning db: admin 09:57:04 [replica set sync] replauthenticate: no user in local.system.users to use for authentication replSet initial sync query minValid 09:57:04 [replica set sync] replSet initial sync initial oplog application 09:57:04 [replica set sync] replSet initial sync finishing up 09:57:04 [replica set sync] replSet set minValid=52575ae3:1 09:57:04 [replica set sync] building new index on { _id: 1 } for local.replset.minvalid 09:57:04 [replica set sync] done for 0 records 0secs 09:57:04 [replica set sync] replSet initial sync done 09:57:05 [replica set sync] replSet SECONDARY
rs.status()
6、添加仲裁节点
我们在admin集合中使用rs.addArb()追加即可
rs.addArb("192.168.1.227")
查看状态:
该仲裁节点不参与数据的复制,只是参与投票选择主节点而已
在该节点为not reachable/healthy的状态下是起不到投票主节点的作用的。删除227服务琪上的db文件,重启
查看状态:
添加仲裁节点成功
7、在主节点添加数据:
从节点查看数据信息
在从节点228上可以同步到主节点的数据信息,但无法查看
8、228主几点宕掉,查看229状态
可以看到229 从secondary变味primary了
9、启动228,但是228不再为primary了,而为secondary了
10、首先这是正常的,因为SECONDARY是不允许读写的, 在写多读少的应用中,使用Replica Sets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。对于replica set 中的secondary 节点默认是不可读的:
weijh:SECONDARY> use testCp switched to db testCp weijh:SECONDARY> show collections Fri Oct 11 10:09:36 uncaught exception: error: { "$err" : "not master and slaveok=false", "code" : 13435 }
若需要SECONDARY可以执行读的操作,在SECONDARY执行slaveok方法
weijh:SECONDARY> db.getMongo() connection to 127.0.0.1 weijh:SECONDARY> db.getMongo().setSlaveOk() not master and slaveok=false
执行查询操作测试:
参考资料网页:
http://xuezaijiongtu.blog.163.com/blog/static/19757627120122153627331/
http://blog.csdn.net/liuyuanshijie/article/details/6735625
http://www.2cto.com/database/201307/228444.html
相关文章推荐
- MongoDB副本集
- CentOS 6.4创建Mongodb副本集
- 一边搭建一边理解MongoDB副本集(三个成员的副本集)
- mongodb副本集(选举,节点设置,读写分离设置)
- MongoDB副本集配置和数据迁移实战
- mongodb入门之mongodb副本集
- CentOS 6.4创建Mongodb副本集
- 一边搭建一边理解MongoDB副本集(分布于两个或多个数据中心的副本集)
- Mongodb副本集本地测试案例
- NoSQL——MongoDB副本集和文档管理
- mongodb副本集
- MongoDB副本集
- 一边搭建一边理解MongoDB副本集(副本集选举)
- mongoDB副本集
- 配置mongodb副本集
- MongoDB副本集配置系列八:MongoDB监控
- mongodb副本集的基础概念和各种机制
- 一边搭建一边理解MongoDB副本集(副本集回滚)
- MongoDB副本集和分片模式安装
- MongoDB副本集及C#程序的连接配置