老板要俺找个异构多数据库系统,运行起来。
一个周的时间,成果如下:
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是一种数据库集群中间件,可提供负载平衡和透明的故障转移。 数据库在多个节点上复制,并且Sequoia平衡了它们之间的查询。 红杉支持在线维护和恢复操作。
Sequoia实现蛋白质二级结构预测
When your JMeter test plan tree becomes like a sequoia or a banyan, you start feeling yourself like a monkey in a jungle, jumping from branch to branch, trying to support this important test ...
红杉 使用Docker进行可扩展的测试 安装Docker Mac- Ubuntu- CentOS- 安装Go(1.7+) Ubuntu- CentOS- ...go get github.com/couchbaselabs/sequoia ...使用Docker网络运行(EXPERIMENTAL) ./sequoia -scope
Serverless computing is a rapidly growing paradigm thateasily harnesses the powe
ST Sequoia FLI32626H-BG Digital Video Processor Datasheet
红杉 文档可以在找到
现在可以在/ sequoia / Standalone下找到最新版本 红杉Fortran单机版 待编译并在linux或Windows + cygwin下运行 该Fortran脚本在功能上与R包中的脚本相同,但是具有部分可选的额外输出,对于调试很有用。 该代码已在...
Xfce或其他已安装的DE) 从config.js轻松配置登录失败通知如何安装AUR Linux 从AUR下载[ lightdm-webkit-theme-sequoia-git ]( )或使用yaourt: yaourt -S lightdm-webkit-theme-sequoia-git 现在,在/etc/lightdm...
Thiel、Sequoia Capital 和 Andreessen Horowitz 投资 2 MM 生意活动: 公司或项目试图解决什么具体的财务问题? Stripe 旨在实现支付流程的现代化,使其对小型企业而言既快速又可扩展。 谁是公司的
用于Fedora的Sequoia PGP正在进行的RPM软件包 该存储库包含RPM规范文件和用于板条箱的补丁程序,用于的扩展名,以及尚未从Fedora官方存储库中获得的所有依赖项。 包裹审查票 包裹 票证链接 防锈帆布 防锈读卡器 不...
Sequoia
西门子 Sequoia 512是老彩超了,说明书很难找的有需要的可以下载
为了确保该公司的软件平台能在 IBM 的主流服务器上良好地运行,Sequoia Media Manager 在马萨诸塞州 Waltham 的 IBM Solution Partnership Center(解决方案合作中心,SPC)接受了可移植性测试。该中心经验丰富的...
本程序使用传统的[TuShare接口],pip install -r requirements.txt 安装程序依赖,python main.py,运行结果看日志文件[sequoia.log]。需要安装TA-Lib。本程序实现了多种选股策略,可选择一到多种策略组合使用,参见...
Sequoia选股系统 简介 本程序使用传统的,并非需要捐赠的,获取数据无限制; 另,由于TuShare的增量更新接口有bug(最近一个交易日的数据获取不到),所以每次计算前都是删除所有数据,全部重新获取。 本程序实现了...
工具 SequoiaSQL,包含分布式数据库SequoiaDB的SQL引擎,以及兼容各种SQL语法协议的解析器。 SequoiaSQL项目目前已经完成了对MySQL和PostgreSQL的支持,并且已经打包进入产品中,投入用户的实际生产环境里使用。
sequoia.nim:Nim的Sequoia PGP包装器
Zhipeng Jia and Emmett Witchel. 2021. Nightcore: Efficient and ScalableProceedin
rado(1)-查找并下载OTR程序 概要 rado < command> [options] 描述 此工具使您可以查找和下载radioechoes.com上的旧时广播节目。 您可以指定要下载的节目以及多少集。 有关这些命令及其用法的更多信息,请参见docs/...