ITPub博客

首页 > 数据库 > NoSQL > 使用副本集搭建MongoDB集群

使用副本集搭建MongoDB集群

原创 NoSQL 作者:壹頁書 时间:2014-05-15 13:09:29 0 删除 编辑
MongoDB的副本集,我的理解就是自带故障转移的主从复制。

集群的入口还是主节点,数据也是从主节点分发,这个和MySQL都是一致的。
和MySQL Master-Slave不一样的是,副本集记录各个节点的心跳信息。
一旦主节点不可用,其余的节点会推举一个新的主节点,进行故障转移,而这些操作对于应用是透明的。


mongodb新建副本集的时候,从节点必须是空库,没有任何数据。
测试环境如下
192.168.25.128 主节点
192.168.25.129 从节点
192.168.25.130 从节点
配置文件如下(三个节点都是同样的配置)
dbpath=/home/lihuilin/Desktop/data
smallfiles=true
replSet=mvbox
其中replSet是集群的名称

三个节点启动之后,在主节点输入集群配置
  1. config = { _id:"mvbox", members:[
  2. {_id:0,host:"192.168.25.128:27017"},
  3. {_id:1,host:"192.168.25.129:27017"},
  4. {_id:2,host:"192.168.25.130:27017"}]
  5. }
  6. rs.initiate(config);
结果如下



查看自己是否是主节点

查看集群状态


使用JAVA程序测试MongoDB集群
  1. import java.util.*;
  2. import com.mongodb.*;

  3. public class MongoTest {
  4.         public static void main(String[] args) {
  5.  
  6.                try {
  7.                      List<ServerAddress> addresses = new ArrayList<ServerAddress>();
  8.                      ServerAddress address1 = new ServerAddress("192.168.25.128" , 27017);
  9.                      ServerAddress address2 = new ServerAddress("192.168.25.129" , 27017);
  10.                      ServerAddress address3 = new ServerAddress("192.168.25.130" , 27017);
  11.                      addresses.add(address1);
  12.                      addresses.add(address2);
  13.                      addresses.add(address3);
  14.  
  15.                      MongoClient client = new MongoClient(addresses);
  16.                      DB db = client.getDB( "mvbox");
  17.                      DBCollection coll = db.getCollection( "song");
  18.  
  19.                      BasicDBObject object = new BasicDBObject();
  20.                      object.append( "s1", "test1" );
  21.  
  22.                      coll.insert(object);
  23.  
  24.                      DBCursor dbCursor = coll.find();
  25.  
  26.                       while (dbCursor.hasNext()) {
  27.                            DBObject dbObject = dbCursor.next();
  28.                            System. out.println(dbObject.toString());
  29.                      }
  30.  
  31.               } catch (Exception e) {
  32.                      e.printStackTrace();
  33.               }
  34.  
  35.        }
  36.  
  37. }
插入一条记录


然后将主节点关机,模拟故障
原来129的从节点被选举为新的主节点。


再次执行JAVA程序,
可以看到前端的JAVA程序不受影响.


参考:
http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html
http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html
http://www.w3cschool.cc/mongodb/mongodb-tutorial.html

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-1161835/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: JAVA切分大文件
下一篇: 一致性Hash学习
请登录后发表评论 登录
全部评论

注册时间:2013-10-19

  • 博文量
    620
  • 访问量
    6339971