`
zhuyx808
  • 浏览: 124875 次
  • 性别: Icon_minigender_1
  • 来自: 快来看~天上米有灰机
社区版块
存档分类
最新评论

sequoia 的详细安装步骤

阅读更多
关于 sequoia的详细介绍自己查资料,我就不多说了,对于这个数据库中间件首先保证JDK > 1.4
最好把你的JDK安装到一个具体路径,这个路径最好不要有空格(比如 C:\Program Files中间就有空格),具体为什么中间不要空格,你可以试下就知道了,O(∩_∩)O sequoia解析路径的时候遇到空格就会卡住。好了废话不多说,进入安装:


到 http://sequoia.continuent.org 上下载 sequoia-x.y-bin.tar.gz(我用的是sequoia 2.10.10的版本)
然后 java -jar sequoia-x.y-bin.tar.gz
一路图形界面安装,嘿嘿,你要想命令行安装,自己搞去,我只来最简单的,(命令行安装要配置一个环境变量SEQUOIA_HOME),好了,安装完毕。
别急哈,在安装完了我再告诉你一些东西(嘿嘿,生米先煮成熟饭再说)。首先要明白几个点,因为是数据库中间件,你这里肯定会有几个节点,比如node1数据库 mysql,node2 数据库 oracle ..... 你控制节点,或者说是控制服务器就叫nodeN吧,对于数据库服务器不用装sequoia,你想用哪台机器控制这个中间件就在哪台机器上安装sequoia,好了,这里我用我自己电脑和另外一台电脑来完成这个操作,控制台在我电脑里。我电脑ip:192.168.61.114 另外一台电脑地址192.168.61.133(其实这个地址没用,只不过是数据库连接地址罢了)。
对于sequoia 的启动一般是通过bin里的console.bat启动的,所以我要先讲下创建一个.bat文件来启动我们的集群,嘿嘿,配置一步一步来啊,跟我的步骤你会明白文件是如何加载的,我们先在demo文件夹里创建一个a.bat
@echo off
title Sequoia RAIDb-1 demo
echo ******************************************************
echo ******************************************************
echo **                                                  **
echo ** Please press a key when hsqldb servers are ready **
echo **                                                  **
echo ******************************************************
echo ******************************************************

SET SEQUOIA_HOME="d:\sql\sequoia"



:begin
cd "%SEQUOIA_HOME%\bin"

echo "Waiting for mysql servers to finish start up" 

echo "Starting Controller"

start /B controller.bat -f ..\config\controller\controller-mysqlserver.xml


:end

注意红色的那个文件,ok先记住这个名字,看好路径,这个批处理文件的意思就是加载这个xml文件,好了 这个文件我们还没有建立,我们就到config\controller里面创建这个文件controller-mysqlserver.xml具体内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE SEQUOIA-CONTROLLER PUBLIC "-//Continuent//DTD SEQUOIA-CONTROLLER 2.10.10//EN"  "http://sequoia.continuent.org/dtds/sequoia-controller-2.10.10.dtd">
<SEQUOIA-CONTROLLER>
	<Controller ipAddress="127.0.0.1" port="25322">
    <JmxSettings>
    	<RmiJmxAdaptor port="1090"/>
	</JmxSettings>
	<VirtualDatabase configFile="mysqlserver-raidb1-distribution.xml" virtualDatabaseName="myDB" autoEnableBackends="true" checkpointName="Initial_empty_recovery_log"/>
	</Controller>
</SEQUOIA-CONTROLLER>

再次注意这个红色的字体,对鸟,从字面意思我们就可以理解是虚拟数据库的配置文件,啥?你问我哪来的虚拟数据库,对不起,看介绍吧。注意这个配置文件是很重要的~好了,我们现在就前往config\virtualdatabase创建我们这个虚拟数据库配置文件mysqlserver-raidb1-distribution.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SEQUOIA PUBLIC "-//Continuent//DTD SEQUOIA 2.10.10//EN" "http://sequoia.continuent.org/dtds/sequoia-2.10.10.dtd">

<SEQUOIA>

  <VirtualDatabase name="myDB">

	<Distribution>
    <MessageTimeouts/>
	</Distribution>
	
    <Backup>
      <Backuper backuperName="Octopus"
        className="org.continuent.sequoia.controller.backup.backupers.OctopusBackuper"
        options="zip=true"/>
    </Backup>
    
   <AuthenticationManager>
      <Admin>
      	<User username="admin" password=""/>
      </Admin> 
      <VirtualUsers>
        <VirtualLogin vLogin="user" vPassword=""/>
      </VirtualUsers>
    </AuthenticationManager>

    <DatabaseBackend name="localhost1" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/clusterdb" connectionTestStatement="select now()">
      <ConnectionManager vLogin="user" rLogin="root" rPassword="zyx808">
        <VariablePoolConnectionManager initPoolSize="10" minPoolSize="5" maxPoolSize="50" idleTimeout="30" waitTimeout="10"/>
      </ConnectionManager>
    </DatabaseBackend>

    <DatabaseBackend name="localhost2" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.61.133:3306/clusterdb" connectionTestStatement="select now()">
      <ConnectionManager vLogin="user" rLogin="test1" rPassword="abc">
        <VariablePoolConnectionManager initPoolSize="10" minPoolSize="5" maxPoolSize="50" idleTimeout="30" waitTimeout="10"/>
      </ConnectionManager>
    </DatabaseBackend>

    <RequestManager>
      <RequestScheduler>
         <RAIDb-1Scheduler level="passThrough"/>
      </RequestScheduler>

      <LoadBalancer>
         <RAIDb-1>
            <WaitForCompletion policy="first"/>
            <RAIDb-1-LeastPendingRequestsFirst/>
         </RAIDb-1>
      </LoadBalancer>
      <RecoveryLog driver="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/clusterdb" login="root" password="zyx808">
          <RecoveryLogTable tableName="RECOVERY"
          logIdColumnType="BIGINT NOT NULL"          
          vloginColumnType="VARCHAR(20) NOT NULL"
		  sqlColumnName="sqlsrc"
			sqlColumnType="TEXT NOT NULL"
		sqlParamColumnType="TEXT"
        extraStatementDefinition=",PRIMARY KEY (log_id)"/>
        <CheckpointTable tableName="CHECK_POINT"
          checkpointNameColumnType="VARCHAR(127) NOT NULL"/>
        <BackendTable tableName="BACKEND"
          databaseNameColumnType="VARCHAR(50) NOT NULL"
          backendNameColumnType="VARCHAR(50) NOT NULL"
          checkpointNameColumnType="VARCHAR(127) NOT NULL"/>
        <DumpTable tableName="SEQUOIA_DUMP" 
      dumpNameColumnType="TEXT NOT NULL"
          dumpDateColumnType="DATETIME"
          dumpPathColumnType="TEXT NOT NULL"
          dumpFormatColumnType="TEXT NOT NULL"
          checkpointNameColumnType="TEXT NOT NULL"
          backendNameColumnType="TEXT NOT NULL"
          tablesColumnType="TEXT NOT NULL"/>
      </RecoveryLog>
      
    </RequestManager>

  </VirtualDatabase>

</SEQUOIA>


网上大多文章就不说这个重要的配置文件是怎么配的,我要重点说下,为后来的人指个路。
配置文件前面不多说,就说DatabaseBackend节点他是具体数据库的地址和驱动名称(这个驱动的jar包记得要放到driver里),vlogin就表示是虚拟数据库登陆你实际数据的用户,rlogin就是你实际数据库的用户啦,好了,我现在配置了2个mysql的数据库,一个是我自己电脑上的,一个是133上的。下面最重要的一个节点就要开始啦RecoveryLog节点,这个节点是为你以后各个数据库之间同步,日志等等做重要作用的,所以我们不可马虎哦。下面几个从名字上看你也能看的出是什么意思 就是他会自动生成这些表,这里面注意你的数据库的不同采用具体数据的定义方式,比如int,int(4),varchar,varchar(20)等等吧要注意他们的关键字等,如果你用mysql 你就要按我的这个比较好,sqlColumnName要加上因为生成的字段有一个叫sql的,你不命名就会出错的,还有就是sqlParamColumnType 就直接用text就可以啦,就不要加not null 啦,要不然也会出错的哦,至少在我这里就是这样啦。好了这个文件配置完了。那我们是不是应该松扣气那?实践证明,不要松啊,松了就等死吧。
在我们config文件夹下有一个hedera_jgroups.properties他的作用就是要读取sequencer.xml文件,可是不知道你们发现没有,即使你配置了sequencer.xml文件也会出错

<!--
Total order protocol stack using the SEQUENCER protocol
Version: $Id: sequencer.xml,v 1.1 2006/06/26 13:08:47 emmanuel Exp $
-->
<config>
    <UDP bind_addr="192.168.61.114"
		mcast_port="45566" 
         mcast_addr="228.8.8.9"         tos="16"
         ucast_recv_buf_size="20000000"
         ucast_send_buf_size="640000"
         mcast_recv_buf_size="25000000" 
         mcast_send_buf_size="640000" 
         loopback="false"
         discard_incompatible_packets="true"
         max_bundle_size="64000"
         max_bundle_timeout="30"
         use_incoming_packet_handler="true" 
         use_outgoing_packet_handler="false" 
         ip_ttl="2" 
         down_thread="false" up_thread="false"
         enable_bundling="true"/>
    <PING timeout="2000"
          down_thread="false" up_thread="false" num_initial_members="3"/>
    <MERGE2 max_interval="10000"
            down_thread="false" up_thread="false" min_interval="5000"/>
    <FD_SOCK down_thread="false" up_thread="false"/>
    <!--VERIFY_SUSPECT timeout="1500" down_thread="false"/-->
    <pbcast.NAKACK max_xmit_size="60000"
                   use_mcast_xmit="false" gc_lag="0"
                   retransmit_timeout="100,200,300,600,1200,2400,4800"
                   down_thread="false" up_thread="false"
                   discard_delivered_msgs="true"/>
    <UNICAST timeout="300,600,1200,2400,3600"
             down_thread="false" up_thread="false"/>
    <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000" 
                   down_thread="false" up_thread="false"
                   max_bytes="400000"/>
    <VIEW_SYNC avg_send_interval="60000" down_thread="false" up_thread="false" />
    <pbcast.GMS print_local_addr="true" join_timeout="3000" 
                down_thread="false" up_thread="false"
                join_retry_timeout="2000" shun="true" handle_concurrent_startup="true" />
    <SEQUENCER down_thread="false" up_thread="false" />
    <FC max_credits="2000000" down_thread="false" up_thread="false"
           min_threshold="0.10"/>
    <!-- FRAG2 frag_size="60000" down_thread="false" up_thread="true"/ -->
    <!-- pbcast.STATE_TRANSFER down_thread="false" up_thread="false"/-->
</config>


我们要注意的就是红字的部分,这个是我们的控制台的地址也就是我自己的ip地址,介绍上说把这个配置一下就可以了,我按上面说的把这个配置了下结果还是发现出错,而且出个莫名其妙的192.168.5.1 那这个错误信息到底从哪里来?google了下,从他们的邮件列表里我发现了一个问题,就是sequoia底层用到了jgroups的udp的ip多播,而他们是直接把jgroups的包给放到了lib里面,里面有jgroups的各种配置,就在这个配置里有192.168.5.1,好了问题原因找到,我们就解开jgroups的核心包,把里面的sequencer.xml文件给替换了,问题解决!
上面说的比较繁杂,而且并没有以前网上的那种按部就班的方式,他们都说的太笼统了,而且并没有描绘他们遇到的问题。
那么好了我们已经把这个中间件给安装好了,我们就用我们的a.bat来启动吧,一路顺风,写个小程序测试下吧(哈哈,网上抄的,略有改动,保证最新版)GenerateSampleData.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class GenerateSampleData {

	public void generate() {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs=null;
		try {
			Class.forName("org.continuent.sequoia.driver.Driver").newInstance();
		String url = "jdbc:sequoia://localhost:25322/myDB";
		conn = DriverManager.getConnection(url, "user", "");
						
			try {
				
			stmt = conn.createStatement();								stmt.executeUpdate("insert into  user(id,name) values(9,'c')");
								System.out.println("Update Record Success.");
			} catch (Exception ex) {
			ex.printStackTrace();
			} finally {
				try {
					if(rs!=null)
						rs.close();
					if (stmt != null)
						stmt.close();
					if (conn != null)
						conn.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		GenerateSampleData g = new GenerateSampleData();
		g.generate();

	}

}


将就着用吧,主要是给你们看驱动和连接地址,我们先吧这个程序运行下,连接2个地方的真实数据库看看结果(user表就是一个id int ,一个name varchar(50) 字段,具体语句你自己也会建立吧),好了发现两个表里都有值,我们成功了,我们下面再来测试下断开其中一个节点的情况,好了cmd进入sequoia的安装目录里的bin ,运行 console.bat 敲进 admin myDB 他会让你输入用户名admin和密码(空), 然后我们disable localhost2 再运行程序,我们进不同的数据库看看,发现自己的数据库又多了一条数据,再看看133那台,没有数据,好了,我们再敲进 enable localhost2 什么都不动,我们直接进入133看看,嘿嘿,数据出来了吧,说明我们配置完全成功了~~~~~~

讲的比较片面,具体更多功能请看介绍和api~~~~~
留个课下作业,在我关闭这个中间件的时候该怎么关闭那?直接关?NO NO NO
分享到:
评论
1 楼 suzg110 2017-01-11  
关闭中间件的时候该怎么关闭的?直接关了下次启动就出现异常
VirtualDatabaseException: NOT STARTING VDB (not the last man down)

相关推荐

    Sequoia EFI1、修改了配置,驱动 intel 9260 网卡 wifi、蓝牙

    Sequoia EFI是一款面向黑苹果用户的固件配置工具,它允许用户自定义和修改配置文件,以支持在非苹果硬件上安装和运行苹果的操作系统。特别地,Sequoia EFI在版本1中实现了对英特尔9260无线网卡的支持,该网卡具备...

    黑苹果 macos12、13、14、15 Sequoia,适配 EFI

    另外,确保EFI文件的正确配置是安装过程中的一个关键步骤,直接关系到系统安装的成败和后续的使用体验。由于黑苹果安装本身就属于较为复杂的技术操作,因此建议用户在操作之前仔细阅读相关文档,并做好必要的数据...

    sequoia

    在这样的仓库中,通常会有一个README文件,用于介绍项目的基本信息、安装指南和使用方法。此外,可能会有LICENSE文件规定了软件的使用许可条件,这对于开源项目尤其重要。 在C++项目中,构建系统通常是Makefile或...

    50-段佳昂-(2021 SoCC)Sequoia Enabling Quality-of-Service in Serverl

    在实施Sequoia的过程中,研究人员使用了受控和现实世界的工作负载进行实验,验证了其在不同场景下的有效性。通过这些实验,Sequoia展示了其在保证服务质量、降低延迟、提高公平性和性能方面的优越性。 总之,...

    sequoia:用Java用处理库编写的16步矩阵Midi音序器

    #SEQUOIA 目前,这只是一个很小的16步矩阵Midi音序器,几乎没有功能。 下载 依存关系 外部的 内部的 Java文档 设计 即将推出的功能 处理方式 控制步骤数 速度控制

    Python-基于TuShare的A股自动选股程序

    在A股自动选股程序中,关键步骤包括数据获取、数据处理和选股策略制定。数据获取阶段,程序会调用TuShare接口获取指定股票池的历史交易数据,包括开盘价、收盘价、最高价、最低价、成交量等。数据处理则涉及数据清洗...

    modelsim最详细最权威的入门教程.rar

    安装过程中要遵循官方提供的步骤,确保所有必要的组件都被正确安装。同时,根据个人需求选择是否安装额外的组件,如Sequoia Simulator(用于高级功能)或Questa(提供高级验证功能)。 完成安装后,我们需要熟悉...

    Sequoia:在FTC SDK之上构建的用于子系统管理和基于命令的编程的FTC库

    文档通常会详细解释库的使用方法、安装步骤和最佳实践,而构建脚本则用于编译和打包库文件。 总的来说,Sequoia为FTC参赛队伍提供了一个强大的工具,它简化了基于命令的编程和子系统管理,使团队能够更专注于机器人...

    博通94352黑苹果驱动

    这份文档详细阐述了安装步骤和可能遇到的问题及其解决方案,对于不熟悉黑苹果系统或者驱动安装的用户来说是一份宝贵的指南。 另一份文件“BC94352-10125-6”可能是驱动程序的更新版本或者是特定的固件,它的具体...

    黑苹果ALC887声卡驱动,技嘉主板

    ALC887声卡驱动的安装步骤展示了“黑苹果”用户如何处理非官方硬件支持的问题,同时也提醒我们,尽管macOS可以跨平台运行,但非苹果认证的硬件可能需要额外的驱动适配工作。在进行这类操作时,用户应当谨慎行事,...

    激光粒度仪LISST-200X-Flow-Through-Chamber-Users-Manual_v1_0.pdf

    拆卸过程与安装相反,需谨慎操作,避免对设备造成损伤。首先关闭系统,然后断开水路连接,再解除腔室的固定,最后用干净的布或工具清理腔室和LISST-200X的接口。 4. LISST-200X路径减小模块的维护 这部分指导用户...

    sequoia_geodiv:红杉行动项目的地质多样性附加费

    "超载"一词暗示了这个系统可能设计用于处理大数据量的地质信息,这对于理解和模拟地球表层的过程至关重要。 "CSS"标签则可能是指层叠样式表(Cascading Style Sheets),它是网页设计和开发中用于定义用户界面视觉...

    ar9xxx(9285/9462/9463/9565/9485)黑苹果驱动

    在IT领域,尤其是在苹果计算机(Mac)用户群中,“黑苹果”(Black Apple)是指在非苹果硬件上安装苹果操作系统macOS的过程。由于macOS通常只预装在苹果公司的硬件设备上,因此在非官方硬件上安装macOS需要对驱动...

    Intel NUC8 全系列都能用的黑苹果OC

    这个过程通常被称为“黑苹果”安装,因为它涉及到在非Apple硬件上安装苹果的操作系统。 描述部分提到,“本人机子NUC8最低配 i3款的 已经成功引导big sur”,意味着至少有一台配备i3处理器的Intel NUC8能够顺利地...

    海洋设备-LISST

    在LISST-100X的使用过程中,数据预处理是一个关键步骤。数据预处理包括对仪器产生的原始数据进行校准、转换、分析和可视化,这是获得准确粒度分布结果的必要环节。预处理后,用户还需要对数据进行质量控制,以确保...

    黑苹果驱动之声卡ALC887

    在IT领域,尤其是在苹果电脑(Mac)的非官方操作系统安装中,"黑苹果"(Black Apple)是指在非苹果硬件上安装苹果的操作系统Mac ...安装和配置过程中需要谨慎操作,并遵循社区的最佳实践,以确保系统的稳定性和功能性。

    黑苹果BCM94360 无线驱动

    安装过程中,用户需要按照指示将驱动程序正确地加载到系统中,并确保系统识别和激活无线网卡。有时候,可能还需要更新系统内核支持或者调整系统设置才能达到最佳兼容性。 总的来说,黑苹果BCM94360无线驱动是黑苹果...

    黑苹果引导OC-0.9.3

    更易于配置:OpenCore的配置文件结构更为清晰,配置过程也更为直观和简单。 在使用OC引导安装或运行macOS时,可能会遇到各种问题,如启动卡代码、设备无法识别等。针对这些问题,可以通过以下方式解决: 检查配置...

    ALC887/888声卡黑苹果驱动MAC

    安装和使用这个驱动通常涉及以下步骤: 1. 首先,你需要确保你的系统已经准备好安装黑苹果驱动,包括拥有合法的Mac OS安装以及所有必要的工具,如 Clover 或 Chameleon 引导加载器。 2. 下载包含VoodooHDA-ALC887:...

    华为笔记本黑苹果EFI MateBook-X-Pro-2020-OpenCore-1.0.2-Ventura13.7.1

    这说明了安装黑苹果并不只是简单的拷贝过程,而是一个需要根据具体硬件环境调整细节的过程。 此外,本案例还使用了标签“黑苹果EFI”,这表明了这是一款针对EFI启动的黑苹果系统配置文件,同时标签中的“华为笔记本...

Global site tag (gtag.js) - Google Analytics