MongoDb的副本集测试
1.正确安装MongoDb2, 创建3个虚拟机,分别是wzq-mongo1, wzq-mongo2, wzq-mongo3.其中三个虚拟机分别对应的IP如下wzq-mongo1 - 》 192.168.0.60,wzq-mongo2 -》 192.168.0.64,wzq-mongo3 -》 192.168.0.693, 在每个虚拟机上,
1.正确安装MongoDb
http://blog.csdn.net/u013298318/article/details/52248478
2.创建两个虚拟机,分别是wucan01,wucan02(自命名)。
两个虚拟机分别对应的IP如下:
wucan01 - 》 192.168.127.129(主节点)
wucan02 -》 192.168.127.130(从节点)
3.配置每台虚拟机的mongodb.conf
sudo vi /etc/mongodb.conf
port = 27017 端口号
dbpath=/usr/local/mongodb/data
logpath=/usr/local/mongodb/logs
logappend=true 写日志的模式:设置为true为追加。默认是覆盖。如果未指定此设置,启动时MongoDB的将覆盖现有的日志文件。
auth = true 用户认证,默认false。不需要认证。当设置为true时候,进入数据库需要auth验证。
replSet = rs0 多个虚拟机的该名称必须一致
bind_ip = 192.167.127.129(192.167.127.130)
由于mongodb 会通过主机名称启动,所以有时候需要修改hosts里面主机名对应的ip
sudo vi /etc/hostname
sudo vi /etc/hosts
将主机名对应的 127.0.1.1 wucan01修改为 192.168.127.129 wucan01
然后重启mongodb
./mongod --config /etc/mongodb.conf
4. 在wucan01上启动mongodb(只在主节点上配置)
./mongo 192.168.127.129
5. 初始化replication
mongo> rs.initiate()
6, 在rs上面添加成员
rs0:PRIMARY> rs.add("192.168.127.130:27017")
7, 查看目前的状态rs0:PRIMARY> rs.status()
- rs0:PRIMARY> rs.status()
- {
- "set" : "rs0",
- "date" : ISODate("2015-03-23T14:47:56.002Z"),
- "myState" : 1,
- "members" : [
- {
- "_id" : 0,
- "name" : "192.168.127.129:27017",
- "health" : 1,
- "state" : 1,
- "stateStr" : "PRIMARY",
- "uptime" : 2303,
- "optime" : Timestamp(1427121702, 1),
- "optimeDate" : ISODate("2015-03-23T14:41:42Z"),
- "electionTime" : Timestamp(1427121785, 1),
- "electionDate" : ISODate("2015-03-23T14:43:05Z"),
- "configVersion" : 89294,
- "self" : true
- },
- {
- "_id" : 1,
- "name" : "192.168.127.130:27017",
- "health" : 1,
- "state" : 2,
- "stateStr" : "SECONDARY",
- "uptime" : 290,
- "optime" : Timestamp(1427121702, 1),
- "optimeDate" : ISODate("2015-03-23T14:41:42Z"),
- "lastHeartbeat" : ISODate("2015-03-23T14:47:54.312Z"),
- "lastHeartbeatRecv" : ISODate("2015-03-23T14:47:54.059Z"),
- "pingMs" : 811,
- "configVersion" : 89294
- },
- ],
- "ok" : 1
- }
8. 测试
rs0:PRIMARY> db.test.insert({name:"wucan",code:"01"})
因为SECONDARY是不允许读写的,需要执行如下操作才可读写:
rs0:SECONDARY> rs.slaveOk();
更多推荐
所有评论(0)