Chinaunix首页 | 论坛 | 博客
  • 博客访问: 599278
  • 博文数量: 248
  • 博客积分: 52
  • 博客等级: 民兵
  • 技术积分: 1028
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-23 12:05
文章分类

全部博文(248)

文章存档

2016年(7)

2013年(241)

分类: Mysql/postgreSQL

2013-03-26 22:53:39

一、什么是Cobar

Cobar是关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务。

1)  该产品在阿里巴巴B2B公司已经稳定运行了3+年;

2)  目前已经接管了3000+MySQL数据库的schema,为应用提供数据服务;

3)  据统计cobar集群目前平均每天处理近50亿次的SQL执行请求。

二、本次测试场景描述

1)系统对外提供的数据库名是dbtest,并且其中有两张表tb1tb2

2)tb1表的数据被映射到物理数据库dbsdtv1tb1上。

      3)tb2表的一部分数据被映射到物理数据库dbsdtv2tb2上,另外一部分数据被映射到物理数据库dbsdtv3tb2上。
如下图1.1所示:

1.1模型图

 

三、实施步骤

  • 软件准备

操作系统: LinuxCentOS5.8

 MySQL: (推荐使用5.1以上版本)
JDK:
(推荐使用1.6以上版本)
Cobar:
(下载tar.gz)

  • 数据准备

MySQL所在服务器IP10.0.211.5192.168.202.83192.168.202.84,端口为3306,用户名为root,密码为123abc,我们需要创建schema:dbtest1dbtest2dbtest3table:tb1tb2。创建脚本如下:

1、在10.0.211.5服务器上创建数据库dbsdtv1;

create database dbsdtv1;

use dbsdtv1;

create table tb1( id    int not null, gmt   datetime);

2、在192.168.202.83服务器上创建数据库dbsdtv2;

create database dbsdtv2;

use dbsdtv2;

create table tb2( id    int not null, val   varchar(256));

3、在192.168.202.84服务器上创建数据库dbsdtv2;

create database dbsdtv2;

use dbsdtv2;

create table tb2( id    int not null, val   varchar(256));

  • 部署Cobar

1#安装JDK1.6以上版本程序

./ jdk-6u37-linux-x64.bin

2#配置JAVA环境变量

echo “JAVA_HOME=/usr/local/jdk1.6.0_37

export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

export PATH

CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export CLASSPATH” >>/etc/profile

source /etc/profile

退出ssh再重新登录输入命令java –version 验证jre环境是否以正确配置

3)下载Cobar压缩文件并解压,进入conf目录可以看到schema.xml, rule.xml, server.xml等相关的配置文件

#wget

# tar -zxf cobar-server-1.2.4.tar.gz

# cd cobar-server-1.2.4

#可以看到bin,conf,lib,logs四个目录

4schema.xml配置如下(注:schema.xml包含MySQLIP、端口、用户名、密码等配置,您需要按照注释替换为您的MySQL信息)

 

   

    

  

     

   

dsTest[0]    

dsTest[1]    

       dsTest[2]

192.168.202.83:3306/dbsdtv1

      192.168.202.84:3306/dbsdtv2

      192.168.202.85:3306/dbsdtv3

    

 root

 

123abc     STRICT_TRANS_TABLES  

5rule.xml配置如下(本文仅以数字类型的id字段作为拆分字段,将数据拆分到两个库中)

    

      id

          

  

      2

配置需要分发到几个分区上(服务器)-->

512

分发数据的长度 -->

 

 

6)server.xml配置如下

     

 

test

dbtest 

 

 

  • 启动和使用Cobar

./startup.sh #Cobar进程名为CobarStartup

#使用lsof –i :8066查看进程是否存在如果存在该进程则证明cobar以正常启动

#一般情况下首次启动会报错这时需要调整startup.sh脚本中的xss参数,将该参数调大一些。

·         如何访问Cobar

访问Cobar同访问MySQL的方式相同,常用访问方式如下(注意:本文将Cobar部署在10.0.0.11这台机器上,否则请替换为您的Cobar所在IP,其他信息不变)

mysql -h10.0.0.11 -utest -ptest -P8066 -Ddbtest  

#JDBC(建议5.1以上的mysql driver版本) Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql:// 10.0.0.11:8066/dbtest", "test", "test"); ......

  • 测试与验证Cobar功能

mysql>insert into tb1 (id, gmt) values (1, now());                   #向表tb1插入一条数据

mysql>insert into tb2 (id, val) values (1, "part1");                 #向表tb2插入一条数据

mysql>insert into tb2 (id, val) values (2, "part1"), (513, "part2");

#向表tb2同时插入多条数据

#此次根据rule.xml的设计规则id小于512的均插入分区1.大于512的插入分区2(服务器2

mysql>select * from tb1;                                             #查询表tb1,验证数据被成功插入

mysql>select * from tb2;                                             #查询tb2,验证数据被成功插入

查看后端MySQL数据库dbsdtv1dbsdtv2dbsdtv3#验证数据分布在不同的库中

阅读(1472) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~