百度空间 | 百度首页 
 
查看文章
 
sequoia for mysql
2008年11月19日 星期三 下午 05:14

这两天一直在做mysql的集群,先用了mysql-proxy虽然是官方出的

但是由于要用到脚本所以速度不是很理想

由于是java的项目所以就用了sequoia (我这里是实验性配置,只有一个控制器,所以比较简单,多个的可以看手册)

主站:http://community.continuent.com/community/sequoia

下载sequoia-2.10.10-bin.tar.gz

地址:https://forge.continuent.org/frs/?group_id=6&Itemid=68

安装:

解压到 / 目录下

目录结构:3rdparty README.txt bin config demo doc drivers lib log xml

vim /etc/csh.cshrc

设置环境变量:

java:

setenv JAVA_HOME       /usr/java/jdk1.6.0_10

setenv CLASS_PATH      $JAVA_HOME/lib:$JAVA_HOME/jre/lib

设置sequoia环境变量:

setenv SEQUOIA_HOME /sequoia

下载mysql的jdbc驱动:

http://mysql.isu.edu.tw/Downloads/Connector-J/mysql-connector-java-5.1.7.tar.gz
这里的驱动是对应5.0以上的mysql版本

解压后把mysql-connector-java-5.1.7-bin.jar放到drivers目录下面就o了

配置控制器controller/controller.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="192.168.3.66" port="25322">(说明:这里写的是将来连接控制器的地址,不要写127.0.0.1除非你就是放在本地连,要不你从外面的机器是连不上来的,127.0.0.1是本地回环
    <Report hideSensitiveData="true" generateOnShutdown="true" generateOnFatal="true" enableFileLogging="true" />
    <JmxSettings>
            <RmiJmxAdaptor port="1090" />(说明:这里是控制台要连接的地址一定要保证hostname获得的主机地址是对应的本地 要不死活也不行,应为这个问题郁闷了我好长时间
    </JmxSettings>
    <VirtualDatabase configFile="hsqldb-raidb1-distribution-1.xml" virtualDatabaseName="myDB" autoEnableBackends="true" checkpointName="Initial_empty_recovery_log"/>(说明:这里是配置虚拟数据库的配置文件和名称
</Controller>
</SEQUOIA-CONTROLLER>

这个文件比较简单到此结束

下面配置hsqldb-raidb1-distribution-1.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" -->(说明:看邮件列说要改为MySQLBackuper,然后把jdbc驱动解压到drivers目录下面 要不备份命令的时候 老是提示找不到 驱动,要改驱动在lib下面sequoia/lib/octopus/xml/conf/MySQLConf.xml里面

        <Backuper backuperName="MySQLBackuper"
        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="mysql65" (这是写名称)driver="com.mysql.jdbc.Driver" (这里是jdbc驱动)url="jdbc:mysql://192.168.3.65:3306/test" (远程数据库地址)connectionTestStatement="select 1"(应为是mysql所以用select 1 具体可以看examples文件夹下面有例子)>
      <ConnectionManager vLogin="user" rLogin="mysql" rPassword="123">(这里用user来登录后端数据库
        <VariablePoolConnectionManager initPoolSize="10" minPoolSize="5" maxPoolSize="50" idleTimeout="30" waitTimeout="10"/>
      </ConnectionManager>
    </DatabaseBackend>(说明:这里是backend数据库,多台机器可以多段

———————————————————————————————————

<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://192.168.0.16/test" login="audit" password="audit">(这里配置日志数据库的地方,具体怎么用我还没研究

<RecoveryLogTable tableName="RECOVERY"(这里是根据这些语句来创建数据库,具体可以配置可以看xml文件夹下面,由于是mysql数据库所以建表语法要修改,我这里是找的网上的,可以使用
                    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="CHECKPOINT"
                  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="DUMP"
             dumpNameColumnType="TEXT NOT NULL"
             dumpDateColumnType="TIMESTAMP"
             dumpPathColumnType="TEXT NOT NULL"
             dumpFormatColumnType="TEXT NOT NULL"
             checkpointNameColumnType="TEXT NOT NULL"
             backendNameColumnType="TEXT NOT NULL"
             tablesColumnType="TEXT NOT NULL"/>
      </RecoveryLog>
    </RequestManager>

</VirtualDatabase>

</SEQUOIA>

还有就是他多台机器的同步数据用的是jgroup的库在lib文件夹下面,改sequencer.xml没用,所以要解压:

jar xvf jgroups-core.jar

修改里面的sequencer.xml开头这样一段:

<UDP bind_addr="192.168.3.66"(说明:绑定ip地址)
         mcast_port="45566"
         mcast_addr="228.8.8.9"(这是一个d类的多播地址,关于多播就是一对多信息发送)

然后jar cvf * jgroups-core.jar在放到lib下面就可以了

然后启动controller.sh有错误可以把log的数据库BACKEND,RECOVERY,DUMP,CHECKPOINT几个表删除在重启一般没什么问题)

然后就是启动console.sh

注意主机名一定要对应本机ip,我刚开始好长时间都连不上。

连上后先写一些可用的命令:

查询一条的example:

admin myDB然后输入密码这是登录

show controllers 查看虚拟数据库的节点控制器

show backends 查看后端backend

show backend * 查看后端数据库详情

initialize mysql65 force
enable mysql65
show backupers:查看backuper
delete dump DUMP1 【keepfile】  :删除一个备份点
show dumps 查看备份点
transfer dump <dump name> <controller IP>:<jmx port> 【nocopy】:转移一个备份点
                             
backup mysql65 DUMP MySQLBackuper /sequoia/bak
backup mysql65 DUMP1 MySQLBackuper /sequoia/bak:这样会备份一个节点的数据库,在DUMP表里面能看到备份的情况,在bak目录下能看到zip压缩文件
restore backend mysql18 DUMP  :这样就恢复数据 不过他不会删除表里的数据,只是把备份的数据全插入进去,在日志会提示找不到备份路径下的文件,如果把zip文件解压放到下面则会把表删除,还在研究
purge log <dump name> 清除日志,我还不知道是清除的在哪
restore log <dump name> <controller IP>:<jmx port>
dump scheduler queues:查询当前连接状况
 dump queues mysql65:查询某个节点情况
sql client jdbc:sequoia://192.168.3.66/myDB

退出管理员admin>,然后shutdown virtualdatabase myDB 关闭控制器

其他:
force checkpoint <backend name> <checkpoint name>
force disable {<backend name> | *} 
force enable {<backend name> | *} 
The truncate log command deletes all entries in the recovery log before a given 
                          checkpoint.
truncate log <checkpoint name> 
dump recoverylog
 
 
 

感谢以下网友:

http://bbs.chinaunix.net/viewthread.php?tid=1303431&highlight=sequoia

http://liuye.javaeye.com/blog/224496

http://blogs.sun.com/JagadishPrasath/entry/using_sequoia_with_glassfish


类别:数据库 | 分享到i贴吧 | 浏览() | 评论 (0)
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu