1、下载cobar http://code.alibabatech.com/wiki/display/cobar/release

2、进入cobar-server-1.2.4目录,可以看到Cobar的主要目录如下:

bin    #包含Cobar的启动、重启、停止等脚本文件

conf   #包含Cobar所有配置文件

lib    #包含Cobar及其依赖的jar文件

logs   #包含Cobar所有日志文件

3、Cobar的所有配置文件全部放在conf目录中,进入conf目录,可以看到:

server.xml   #Cobar系统、用户、集群等相关配置

schema.xml   #schema,dataNode,dataSource相关配置

rule.xml     #分布式规则定义

log4j.xml    #日志相关配置

4、mysql中数据准备

配置两台机器的mysql,ip地址分别为:192.168.1.110 、 192.168.1.113 端口为3306 用户名 root 密码为空。我们需要在 192.168.1.110上创建database:dbtest1,dbtest2,dbtest3;table:tb1(在dbtest1上),tb2(dbtest2、dbtest3上)。在192.168.1.113上创建database:dbtest31,dbtest32;table:tb1(dbtest31上),tb2(dbtest32上)

数据库创建脚本:

#########################################192.168.1.110
#创建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));
#########################################192.168.1.113
#创建dbtest31
drop database if exists dbtest1;
create database dbtest1;
use dbtest31;
#在dbtest1上创建tb1
create table tb1(
id int not null,
gmt datetime);
#创建dbtest32
drop database if exists dbtest2;
create database dbtest2;
use dbtest32;
#在dbtest2上创建tb2
create table tb2(
id int not null,
val varchar(256));
5、配置schema.xml
请确保机器上设置了JAVA环境变量JAVA_HOME
dsTest[0]
dsTest[1]
dsTest[2]
dsTest[3]
dsTest[4]
192.168.1.110:3306/dbtest1
192.168.1.110:3306/dbtest2
192.168.1.110:3306/dbtest3
192.168.1.113:3306/dbtest31
192.168.1.113:3306/dbtest32
root
STRICT_TRANS_TABLES
此处要注意开启远程连接root用户的权限
grant all privileges on *.* to root#'%'
6、配置rule.xml
tableRule
tableRule主要作用是用来判断SQL语句路由到哪些datanode执行,Cobar是通过在SQL中提取一个或多个字段的值,并根据这些字段的值来决定路由到哪个库执行。因此,tableRule定义两个要素:
1)按表中的哪个字段路由?------下文中我们称此字段为路由字段
2)有了字段值,如何路由?------即路由函数
id
function
4
256
:8
2
512
7、配置server.xml
System
8066
9066
16
4
4
4
8
8
_HEARTBEAT_USER_
_HEARTBEAT_PASS_
User
test   
db_single,db_shard
root
-->
-->
Cluster
在实际应用中,经常需要部署一个Cobar集群,我们称集群中的一台Cobar为一个Cobar节点。
192.168.1.110
1
192.168.1.113
2
cobar1,cobar2
用户只需登录Cobar的服务端口(8066),运行Cobar自带的查询命令show cobar_cluster,便可查询集群中所有节点的运行情况以及权重,并根据查询结果做负载均衡。
mysql -h192.168.1.110 -utest -ptest -P8066
mysql>show cobar_cluster; #查询cluster配置中正常的Cobar节点
+---------------+--------+
| HOST          | WEIGHT |
+---------------+--------+
| 192.168.1.110   |      1 |
| 192.168.1.113   |      2 |
+---------------+--------+

注意:

1)如果需要配置Cobar集群,当前Cobar自身也需要作为一个节点配置在cluster中,Cobar不会默认向自己发心跳;

2)show cobar_cluster只显示cluster配置中得正常Cobar节点,如果节点异常(如超时或错误),结果中便不会包含此节点。

8、访问方式

由于Cobar遵循MySQL协议,访问Cobar的方式与访问MySQL数据库完全相同。

支持MySQL命令行方式访问

#命令行
mysql -h192.168.1.110 -utest -ptest -P8066 -Ddb_shard