老板要俺找个异构多数据库系统,运行起来。

一个周的时间,成果如下:

1.了解当前多库系统的研究情况

2.安装了当前流行的多库中间件sequoia

一.多库系统研究情况

两种体系结构:

1基于数据库引擎的多库系统(各主流数据库都提供了集群版本,主要有ORACLE RAC,Mysql high availability cluster,Microsoft SQL Cluster Server, IBM DB2 UDB High Availability Cluster,PostgreR)

2.基于中间件的多库系统(ICX-UDS middleware,sequoia(c-jdbc))

以上繁多的多库系统中,只有基于中间件的多库系统才支持异构数据库,而开源的只有sequoia。

二.sequoia的基本情况

sequoia是c-jdbc项目的延续(改名是由于跟SUN的JDBC有商标上的冲突),该项目发端于INRIA(法国国家计算机和自动化研究院)的sardes项目。  2003年提出了RAIDb的概念,并开发c-jdbc作为软件实现,RAIDb借鉴了RAID的思想,采用灵活的数据库复制技术和集成中间件,以廉价、异构的数据库构建冗余数据库集群,从而提供高可扩展、灵活的高性能集群。

目前sequoia的最新稳定版本是2.10.8,由continent.org开源组织管理(C-JDBC是由OBJECT WEB管理),邮件列表讨论还是比较热烈。

三.安装

万事开头难,因此选择比较简单的方案,构建由两个mysql数据库组成的RAID1集群。

配置如下:             192.168.0.163-------mysql server node1

192.168.0.164-------mysql server node2

192.168.0.166-------sequoia

192.168.0.166------mysql server (sequoia recovery log)

以上服务器操作系统均为redhat

步骤:

1.在三台服务器上安装mysql 5.1,在控制节点上安装sequoia(都有二进制安装包,傻瓜式安装)

2.下载mysql的JDBC驱动,放到sequoia的driver目录下

3.改写controller和virtual database的xml配置文件

控制器的配置文件:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE SEQUOIA-CONTROLLER PUBLIC "-//Continuent//DTD SEQUOIA-CONTROLLER 2.10.8//EN"  "http://sequoia.continuent.org/dtds/sequoia-controller-2.10.8.dtd">
<SEQUOIA-CONTROLLER>
  <Controller port="25322">
    <Report/>
    <JmxSettings>
      <RmiJmxAdaptor/>
    </JmxSettings>
    <VirtualDatabase configFile="RAID1-mysql.xml" virtualDatabaseName="myDB" autoEnableBackends="force" checkpointName="Initial_empty_recovery_log"/>
  </Controller>
</SEQUOIA-CONTROLLER>

虚拟数据库的配置文件---RAID1-mysql.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SEQUOIA PUBLIC "-//Continuent//DTD SEQUOIA 2.10.8//EN" "http://sequoia.continuent.org/dtds/sequoia-2.10.8.dtd">

<SEQUOIA>
 
  <VirtualDatabase name="myDB">
 
    <Monitoring>
      <SQLMonitoring defaultMonitoring="off">
         <SQLMonitoringRule queryPattern="^select" caseSensitive="false" applyToSkeleton ="false" monitoring="on"/>
      </SQLMonitoring>
    </Monitoring>

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

<DatabaseBackend name="node1" driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://192.168.0.163/test" connectionTestStatement="select 1">
      <ConnectionManager vLogin="user" rLogin="root" rPassword="">
        <VariablePoolConnectionManager initPoolSize="40"/>
      </ConnectionManager>
    </DatabaseBackend>
    <DatabaseBackend name="node2" driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://192.168.0.164/test" connectionTestStatement="select 1">
      <ConnectionManager vLogin="user" rLogin="root" rPassword="">
        <VariablePoolConnectionManager initPoolSize="40"/>
      </ConnectionManager>
    </DatabaseBackend>

<RequestManager>

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

<RequestCache>
        <MetadataCache/>
        <ParsingCache/>
        <ResultCache granularity="table" />
      </RequestCache>

<LoadBalancer>
        <RAIDb-1>
          <RAIDb-1-RoundRobin/>
        </RAIDb-1>
      </LoadBalancer>
  
     <RecoveryLog driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test" login="user" password="">
         <RecoveryLogTable tableName="RECOVERY"
          logIdColumnType="BIGINT NOT NULL"         
          vloginColumnType="VARCHAR(20) NOT NULL"
          sqlColumnName="sqlsrc"
          sqlColumnType="TEXT NOT NULL"
          sqlParamColumnType="VARCHAR(20) NOT NULL"
          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>

4按照sequoia安装文档中的步骤,启动控制器,然后启动console执行几条简单的SQL语句,检验一下集群建立成功与否。

四.碰到的问题

一直蛮顺利的,感谢sequoia详尽的文档。碰到的一个主要问题是虚拟数库配置文件需要配置RECOVERY LOG元素,而所给例子中的配置中RECOVERY LOG一个表的列名使用了关键字SQL,字符类型的列也没有指定长度,这在mysql数据库中都是不允许的,后来跑到邮件列表中问,大牛们告诉我可以配置RECOVERY LOG表的列名,改了以后俺的mysql集群就顺顺当当地跑了起来。

最后感谢INIRA和continent给我们提供了这么好用的集群中间件,感谢邮件列表中回答我问题的大牛们,感谢cctv,mtv,感谢我的mother.father,brother,sister..........

现在试验的只是最简单的集群方式,后面还会试验异构的大规模集群,我还会写下来

异构数据库中间件sequoia(c-jdbc)初体验(1.安装试运行)相关推荐

  1. Synopsys初体验——软件安装篇

    Synopsys初体验--软件安装篇 前言 一.虚拟机VMware的安装与使用 1.软件安装 2.创建自己的虚拟机 二.Synopsys系列软件的安装 前言 时光飞逝,转眼间已经是将要毕业的人了.之前 ...

  2. 我的Go+语言初体验——ubuntu安装Go+环境问题锦集(二)

    欢迎大家参与[我的Go+语言初体验]活动: 活动地址:[https://bbs.csdn.net/topics/603464006?utm_source=1594742339] 本文为大家带来[Go+ ...

  3. XENAPP 7.6 和XENDESKTOP 7.6 初体验之一 安装

    阅读全文 环境: 服务器操作系统:Microsoft Windows Server 2012 R2 Datacenter vCPU: 2 Cores(E5-2620 @ 2.0GHz) vRAM:4G ...

  4. Oracle数据库以及Oracle SQL Developer初体验

    首先进入SQL PLUS,这里输入 sys/as sysdba,回车.(貌似是超级管理员权限).之后也可以在里面建表插入等. 接下来讲讲如何用Oracle SQL Developer建表等操作. 先进 ...

  5. v语言初体验,安装,使用

    6.23号v发布当天并没有安装使用,只是简单阅读了一下文档,6.23号看还是0.0.12版本,今天已经更新到0.1.1,前期的版本的更新确实很快,今天体验一下 由于是发布不久,目前还没有打包好的可执行 ...

  6. KVM之初体验——QEMU安装虚拟机

    QEMU简介 QEMU是一款开源的模拟器及虚拟机监管器(Virtual Machine Monitor,  VMM).QEMU主要提供两种功能给用户使用.一是作为用户态模拟器,利用动态代码翻译机制来执 ...

  7. 【3】一铭操作系统初体验,安装ope…

    经过[1]和[2]的步骤以后,已经安装了众多的依赖包 也许opengl开发包已经安装在里面了.ubuntu11.10启动vbox报错libGL.so.1的问题 #find / -name libGL. ...

  8. EdgeCloudSim初体验之安装及初步使用

    论文中需要一个专门针对于边缘计算模块的仿真测试平台,所以找到了一个EdgeCloudSim的开源平台,又是基于Java进行开发的,觉得很不错,但是中文网络环境中好像还没有对其的教程,在下不才,打算写一 ...

  9. 【1】一铭操作系统初体验,安装jav…

    放入光盘启动的时候,略有些云里雾里. 选择第一个选项才是正确的.后面的2个一键安装总给我感觉太过于自动,生怕抹掉了原来的win7操作系统. 安装很快完成. 目前这个版本很可惜,缺乏对win快捷键的支持 ...

最新文章

  1. ubuntu 使用阿里云 apt 源
  2. 两年AI研究经验(教训)总结,进来看看吧!
  3. python使用matplotlib可视化、使用xcorr函数可视化两个变量的互相关图、使用acorr函数可视化自相关图像
  4. 读《李商隐诗集》有感
  5. Spring AOP 增强器获取的源码解析
  6. 堆栈被无意中修改导致程序挂掉
  7. chrome开启touch屏幕点击事件
  8. 测试常用工具下载地址,LR11、QC11
  9. java中execquery(),javaee登录界面
  10. 基于jenkins的go语言项目自动化发布遇到的坑
  11. ++i 和 i++ 性能上的区别
  12. 数组指针 vs 指针数组
  13. 淘云互动机器人_新时代!新机遇!讯飞淘云2018年全国经销商年终大会隆重召开!...
  14. 《Android 3D 游戏案例开发大全》——6.6节游戏界面相关类
  15. win10系统安装virtualbox虚拟机win7系统过程记录
  16. centos 安装Times New Roman
  17. Buffer Pool详解
  18. COM08 -如何基于Davinci工具配置CAN通信协议栈实战课程【配置方法总述】
  19. python 字节码_32.12. dis — Python 字节码反汇编器 — Python 2.7.18 文档
  20. 软考高级 真题 2010年上半年 信息系统项目管理师 案例分析

热门文章

  1. python按行拆分表格_Python将单元格中的多个值拆分为多行
  2. Linux协议栈--NAPI机制
  3. ThreeJS加载geojson数据实现3D地图
  4. 【安全服务】应急响应1:流程、排查与分析
  5. html怎么修改td 的宽度,互联网常识:htmltd怎么设置宽度
  6. js从字符串中提取身份证号,连续18位数字
  7. 在ArcGIS中导入excel中的经纬度点数据,但和其它shp数据无法同时显示的问题
  8. (HGNN) Hypergraph Neural Networks
  9. ARM嵌入式开发板推荐
  10. 光学分频器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告