设为首页 加入收藏

TOP

Sequoiadb测试体验系列之六?Java开发3(一)
2015-07-24 10:26:58 来源: 作者: 【 】 浏览:1
Tags:Sequoiadb 测试 体验 系列 Java 开发

上一篇笔记中更新了在集合中的删除,更新,查询等操作。这次尝试一下SequoiaDB的集群操作。包括复制组的创建和删除,复制组的启动和停止,在复制组中添加、删除、启动、停止节点,获取复制组中的主从节点等。

import java.util.ArrayList;
import java.util.List;

import org.bson.BSONObject;
import org.bson.BasicBSONObject;

import com.sequoiadb.base.Node.NodeStatus;
import com.sequoiadb.base.DBCursor;
import com.sequoiadb.base.Node;
import com.sequoiadb.base.ReplicaGroup;
import com.sequoiadb.base.Sequoiadb;
import com.sequoiadb.exception.BaseException;

public class BlogRG {


	static String rgName = "testRG";
	static String hostName = "sdbserver1";

	public static void main(String[] args) {

		
		//连接数据库
		String host = "192.168.20.46";
		String port = "11810";
		String usr = "admin";
		String password = "admin";

		Sequoiadb sdb = null;

		try {
			sdb = new Sequoiadb(host + ":" + port, usr, password);
		} catch (BaseException e) {
			e.printStackTrace();
			System.exit(1);
		}
		
		//打印有关复制组信息(名称、个数)
		printGroupInfo(sdb);
		
		//清除环境,删掉重复的复制组
		if(isGroupExist(sdb,rgName)){
			System.out.println("Removing the old replica group...");
			sdb.removeReplicaGroup(rgName);
		}
		
		printGroupInfo(sdb);
		
		//添加新复制组
		System.out.println("Adding the new replica group...");
		ReplicaGroup rg = sdb.createReplicaGroup(rgName);
		
		printGroupInfo(sdb);
		
		//打印复制组内节点信息
		System.out.println("Tere are " + rg.getNodeNum(NodeStatus.SDB_NODE_ALL) + " nodes in the group.");
		
		//添加三个新的节点
		Node node1 = addNode(rg,50000);
		Node node2 = addNode(rg,50010);
		Node node3 = addNode(rg,50020);
		
		//打印复制组内节点信息
		System.out.println("Tere are " + rg.getNodeNum(NodeStatus.SDB_NODE_ALL) + " nodes in the group.");

		//获取复制组的主从节点
		Node master = rg.getMaster();
		System.out.println("The master node is " +master.getPort());
		System.out.println("The slave node is " + rg.getSlave().getPort());
		
		//停止主节点
		System.out.println("stoping the master node...");
		master.stop();
		
		//等待主节点停止
		while(rg.getMaster().getPort() == master.getPort()){
			try{
				Thread.sleep(2000);
			} catch (Exception e){
			}
		}

		//查看新选举的主节点
		System.out.println("re-selecting the master node...");
		System.out.println("The master node is " + rg.getMaster().getPort());
		
		

	}
	

	private static void printGroupInfo(Sequoiadb sdb){
		ArrayList names = sdb.getReplicaGroupNames();
		int count = 0;
		System.out.print("The replica groups are ");
		for (Object name : names){
			count++;
			System.out.print((String)name + ", ");
		}
		System.out.println("\nThere are " + count + " replica groups in total.");
	}
	
	private static boolean isGroupExist(Sequoiadb sdb, String rgName){
		ArrayList names = sdb.getReplicaGroupNames();
		for (Object name : names){
			if(rgName.equals((String)name))
					return true;
		}
		return false;
	}
	
	private static Node addNode(ReplicaGroup rg, int port){
		if(rg.getNode(hostName,port)!= null)
			rg.removeNode(hostName, port, null);
		Node node = rg.createNode(hostName,port,"/opt/sequoiadb/database/test/" + port,null);
		System.out.println("starting the node " + port + "...");
		node.start();
		return node;
	}

}

上面的代码在数据库中添加新的复制组,并在新

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇c#程序中使用"like“查询acc.. 下一篇表结构变更后出现的ERROROGG-0116..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中,“指针”用 (2025-12-26 15:20:18)
·在c语言的指针运算中 (2025-12-26 15:20:15)
·C语言-函数指针与函 (2025-12-26 15:20:12)
·求navicat for mysql (2025-12-26 13:21:33)
·有哪位大哥推荐一下m (2025-12-26 13:21:30)