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() 

  1. rs0:PRIMARY> rs.status()  
  2. {  
  3.     "set" : "rs0",  
  4.     "date" : ISODate("2015-03-23T14:47:56.002Z"),  
  5.     "myState" : 1,  
  6.     "members" : [  
  7.         {  
  8.             "_id" : 0,  
  9.             "name" : "192.168.127.129:27017",  
  10.             "health" : 1,  
  11.             "state" : 1,  
  12.             "stateStr" : "PRIMARY",  
  13.             "uptime" : 2303,  
  14.             "optime" : Timestamp(1427121702, 1),  
  15.             "optimeDate" : ISODate("2015-03-23T14:41:42Z"),  
  16.             "electionTime" : Timestamp(1427121785, 1),  
  17.             "electionDate" : ISODate("2015-03-23T14:43:05Z"),  
  18.             "configVersion" : 89294,  
  19.             "self" : true  
  20.         },  
  21.         {  
  22.             "_id" : 1,  
  23.             "name" : "192.168.127.130:27017",  
  24.             "health" : 1,  
  25.             "state" : 2,  
  26.             "stateStr" : "SECONDARY",  
  27.             "uptime" : 290,  
  28.             "optime" : Timestamp(1427121702, 1),  
  29.             "optimeDate" : ISODate("2015-03-23T14:41:42Z"),  
  30.             "lastHeartbeat" : ISODate("2015-03-23T14:47:54.312Z"),  
  31.             "lastHeartbeatRecv" : ISODate("2015-03-23T14:47:54.059Z"),  
  32.             "pingMs" : 811,  
  33.             "configVersion" : 89294  
  34.         },   
  35.     ],  
  36.     "ok" : 1  
  37. }  

8. 测试

rs0:PRIMARY> db.test.insert({name:"wucan",code:"01"})

因为SECONDARY是不允许读写的,需要执行如下操作才可读写:

rs0:SECONDARY> rs.slaveOk();


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐