一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Cobar介绍、安装及使用的例子

时间:2015-07-23 编辑:简简单单 来源:一聚教程网

Cobar是阿里巴巴开源(官方github)的一个对应用保持透明的MySQL数据库分布式处理中间件。

Cobar功能


将一张表拆分到不同的库。
将不同的表放入不同的库。


提供HA方案

Cobar约束
不支持跨库情况下的 join、分页、排序、子查询操作
SET 语句执行会被忽略,事务和字符集设置除外
分库情况下,insert 语句必须包含拆分字段列名
分库情况下,update 语句不能更新拆分字段的值
不支持 SAVEPOINT 操作
暂时只支持 MySQL 数据节点

Cobar安装

wget https://github.com/alibaba/cobar/releases/download/v1.2.7/cobar-server-1.2.7.tar.gz
tar -zxvf cobar-server-1.2.7.tar.gz
cd cobar-server-1.2.7

Cobar配置主要目录如下:
|--bin #包含Cobar的启动、重启、停止等脚本文件
| |--startup.sh #Linux环境启动脚本
| |--startup.bat #Windows环境启动脚本
| |--restart.sh #Linux环境重启脚本
| |--shutdown.sh #Linux环境停止脚本
|--conf #包含Cobar所有配置文件
| |--server.xml #Cobar系统、用户、集群等相关配置
| |--schema.xml #schema,dataNode,dataSource相关配置
| |--rule.xml #分布式规则定义
| |--log4j.xml #日志相关配置
|--lib #包含Cobar及其依赖的jar文件
|--logs #包含Cobar所有日志文件

Cobar配置实例:
(1)数据准备
1353053439_6762.jpg1) 系统对外提供的数据库名是dbtest,并且其中有两张表tb1和tb2。
2) tb1表的数据被映射到物理数据库dbtest1的tb1上。
3) tb2表的一部分数据被映射到物理数据库dbtest2的tb2上,另外一部分数据被映射到物理数据库dbtest3的tb2上。
创建sql如下:
#创建dbtest1
drop database if exists dbtest1;
create database dbtest1;
use dbtest1;
#在dbtest1上创建tb1
create table tb1(
id int not null,
gmt datetime);
#创建dbtest2
drop database if exists dbtest2;
create database dbtest2;
use dbtest2;
#在dbtest2上创建tb2
create table tb2(
id int not null,
val varchar(256));
#创建dbtest3
drop database if exists dbtest3;
create database dbtest3;
use dbtest3;
#在dbtest3上创建tb2
create table tb2(
id int not null,
val varchar(256));

(2)配置schema.xml(数据库结构schema、数据节点dataNode、以及数据源dataSource)



 
 
 
   


 
 
 
 
   
      dsTest[0]
   

 

 
   
      dsTest[1]
   

 

 
   
      dsTest[2]
   

 

 
 
 
   
      192.168.15.130:3306/dbtest1
      192.168.15.130:3306/dbtest2
      192.168.15.130:3306/dbtest3
   

    root
    123456
    STRICT_TRANS_TABLES
 

 

(3)配置rule.xml(分库分表规则)



 
 
 
   
      id
     
   

 

 
 
 
    2
    512
 

 

(4)配置server.xml(Cobar用户名、密码、端口、集群等)



 
 
 
 
 
 
    test
    dbtest
 

 
 
 
 
 
 
 

(5)启动Cobar

./startup.sh

可以查看启动成功日志,logs下stdout.log
01:34:42,078 INFO  ===============================================
01:34:42,078 INFO  Cobar is ready to startup ...
01:34:42,079 INFO  Startup processors ...
01:34:44,115 INFO  Startup connector ...
01:34:44,118 INFO  Initialize dataNodes ...
01:34:44,703 INFO  dnTest3:0 init success
01:34:44,762 INFO  dnTest2:0 init success
01:34:44,915 INFO  dnTest1:0 init success
01:34:45,103 INFO  CobarManager is started and listening on 9066
01:34:45,133 INFO  CobarServer is started and listening on 8066
01:34:45,134 INFO  ===============================================
01:37:28,706 INFO  [thread=Processor1-H0,class=ServerConnection,host=127.0.0.1,port=51797,schema=dbtest]'test' login success
05:19:14,912 WARN  [thread=TimerExecutor3,class=ServerConnection,host=127.0.0.1,port=51797,schema=dbtest] idle timeout
07:41:16,532 INFO  [thread=Processor2-H0,class=ServerConnection,host=127.0.0.1,port=51809,schema=dbtest]'test' login success

(6)使用Cobar

mysql -h127.0.0.1 -utest -ptest -P8066 -Ddbtest
insert into tb1 values (1,now());