Mongodb副本集(复制集)
2016-04-30 22:20
573 查看
下面搭建的副本集是三个节点,一个主节点,一个副节点,一个选举节点,因为有三个节点,所以我们创建三个data目录,然后创建三个日志目录,还有三个配置文件。
具体三个配置文件内容如下:
20001.conf
20002.conf
20003.conf
20003
1.创建data目录
[root@redis /]# cd /usr/local/mongodb/ [root@redis mongodb]# mkdir data [root@redis mongodb]# ls bin data GNU-AGPL-3.0 MPL-2 README THIRD-PARTY-NOTICES [root@redis mongodb]# mkdir data/20001 data/20002/ data/20003
2.创建log目录
[root@redis mongodb]# mkdir logs [root@redis mongodb]# mkdir logs/20001 logs/20002 logs/20003
3.创建三个配置文件
一般我们把启动的配置写成配置文件,这样方便管理具体三个配置文件内容如下:
[root@redis mongodb]# mkdir conf [root@redis mongodb]#在这个目录下创建三个configure文件,
20001.conf
port=20001 bind_ip=192.168.56.44 logpath=/usr/local/mongodb/logs/20001.log dbpath=/usr/local/mongodb/data/20001/ logappend=true pidfilepath=/usr/local/mongodb/data/20001/20001.pid fork=true oplogSize=1024 replSet=Csong
20002.conf
port=20002 bind_ip=192.168.56.44 logpath=/usr/local/mongodb/logs/20002.log dbpath=/usr/local/mongodb/data/20002/ logappend=true pidfilepath=/usr/local/mongodb/data/20002/20002.pid fork=true oplogSize=1024 replSet=Csong
20003.conf
port=20003 bind_ip=192.168.56.44 logpath=/usr/local/mongodb/logs/20003.log dbpath=/usr/local/mongodb/data/20003/ logappend=true pidfilepath=/usr/local/mongodb/data/20003/20003.pid fork=true oplogSize=1024 replSet=Csong
4.开启这三个副本集
20001[root@redis bin]# ls bsondump mongo mongod mongodump mongoexport mongofiles mongoimport mongooplog mongoperf mongorestore mongos mongostat mongotop [root@redis bin]# ./mongod -f /usr/local/mongodb/conf/20001.conf about to fork child process, waiting until server is ready for connections. forked process: 1119 child process started successfully, parent exiting20002
[root@redis bin]# ./mongod -f /usr/local/mongodb/conf/20002.conf about to fork child process, waiting until server is ready for connections. forked process: 1143 child process started successfully, parent exiting [root@redis bin]#
20003
[root@redis bin]# ./mongod -f /usr/local/mongodb/conf/20003.conf about to fork child process, waiting until server is ready for connections. forked process: 1166 child process started successfully, parent exiting
5.登入20001节点进行编辑
<pre name="code" class="sql">[root@redis bin]# ./mongo 192.168.56.44:20001/admin MongoDB shell version: 3.2.4 connecting to: 192.168.56.44:20001/admin Server has startup warnings: 2016-04-30T13:49:19.127+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended. 2016-04-30T13:49:19.127+0800 I CONTROL [initandlisten] > db admin > config = { _id:"Csong", members:[ {"_id":0,"host":"192.168.56.44:20001"}, {"_id":1,"host":"192.168.56.44:20002"}, {"_id":2,"host":"192.168.56.44:20003","arbiterOnly":"true"} ] } { "_id" : "Csong", "members" : [ { "_id" : 0, "host" : "192.168.56.44:20001" }, { "_id" : 1, "host" : "192.168.56.44:20002" }, { "_id" : 2, "host" : "192.168.56.44:20003", "arbiterOnly" : true } ] }
> rs.initiate(config); { "ok" : 1 }
Csong:OTHER> db.users.insert({"username":"Csong"}); WriteResult({ "nInserted" : 1 })
6.从节点验证集合的同步
如果不执行rs.slaveOk()说明从节点的角色是从节点的话,就不会接收到数据。这个时候还能发现提示符变成了secondary,说明是从节点。[root@redis bin]# ./mongo 192.168.56.44:20002/admin MongoDB shell version: 3.2.4 connecting to: 192.168.56.44:20002/admin Server has startup warnings: 2016-04-30T13:52:16.013+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended. 2016-04-30T13:52:16.013+0800 I CONTROL [initandlisten] > db.user.find(); Error: error: { "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } Csong:SECONDARY> rs.slaveOk(); Csong:SECONDARY> db.users.find(); { "_id" : ObjectId("57244cc6c528bbeacdf82cee"), "username" : "Csong" }这个时候登入选举节点是不会发现数据的。
[root@redis bin]# ./mongo 192.168.56.44:20003/admin MongoDB shell version: 3.2.4 connecting to: 192.168.56.44:20003/admin Server has startup warnings: 2016-04-30T13:52:38.230+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended. 2016-04-30T13:52:38.230+0800 I CONTROL [initandlisten] Csong:ARBITER> db.users.find(); Error: error: { "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } Csong:ARBITER> rs.slaveOk(); Csong:ARBITER> db.users.find(); Error: error: { "ok" : 0, "errmsg" : "node is recovering", "code" : 13436 } Csong:ARBITER>简单的副本集实验就做完了,具体的参数可以查看文档解释。
相关文章推荐
- Scrapy学习日记1
- MongoDB学习
- php连接MongoDB数据库及CRUD操作详解
- mongodb常用分组统计-分组分页求最近时间
- Linux下安装MongoDB3.2.5
- MongoDB入门教程(二)
- MONGODB的内部构造 FROM 《MONGODB THE DEFINITIVE GUIDE》
- MONGODB的内部构造 FROM 《MONGODB THE DEFINITIVE GUIDE》
- 浅尝key-value数据库(三)——MongoDB的分布式
- 浅尝key-value数据库(二)——MongoDB的优与劣
- 浅尝key-value数据库(三)——MongoDB的分布式
- 浅尝key-value数据库(二)——MongoDB的优与劣
- 可配置多级指标投票打分应用设计(1)
- MongoDB-基本命令学习一
- Bluemix的三台虚拟机做MongoDB Replica Set
- MongoDB 针对嵌套对象,多层级结构存储,增删改查
- MongoDB -- MongoClient连接池用法
- MongoDB学习笔记-查询
- MongoDB分片集群还原
- MongoDB入门教程(一)