最小化安装CentOS6.4
关闭iptables和SELINUX
1、安装JDK,官方推荐JDK1.6
http://pan.baidu.com/share/link?shareid=453362&uk=1829018343
mkdir /usr/java
将jdk-6u43-linux-x64-rpm.bin上传到/usr/java
chmod 777 jdk-6u43-linux-x64-rpm.bin
./jdk-6u43-linux-x64-rpm.bin
设置环境变量
vi /etc/profile
在文件最后添加下面内容
JAVA_HOME=/usr/java/jdk1.6.0_43
JRE_HOME=/usr/java/jdk1.6.0_43/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
使修改立即生效
source /etc/profile
2、安装mysql,为了方便用yum进行安装
yum -y install mysql mysql-server
启动mysql
service mysqld start
设置用户
mysqladmin -u root password 'dsideal'
连接mysql设置权限
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "dsideal";
flush privileges;
3、创建测试数据库
#创建dbtest1
create database dbtest1;
use dbtest1;
#在dbtest1上创建tb1
create table tb1(id int not null, gmt datetime);
#创建dbtest2
create database dbtest2;
use dbtest2;
#在dbtest2上创建tb2
create table tb2(id int not null, val varchar(256));
#创建dbtest3
create database dbtest3;
use dbtest3;
#在dbtest3上创建tb2
create table tb2(id int not null, val varchar(256));
4、安装和配置Cobar
http://pan.baidu.com/share/link?shareid=453387&uk=1829018343
tar zxvf cobar-server-1.2.7.tar.gz
cd cobar-server-1.2.7
schema.xml配置如下(注意:schema.xml包含MySQL的IP、端口、用户名、密码等配置,您需要按照注释替换为您的MySQL信息。)
vi conf/schema.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cobar:schema SYSTEM "schema.dtd"> <cobar:schema xmlns:cobar="http://cobar.alibaba.com/"> <!-- schema定义 --> <schema name="dbtest" dataNode="dnTest1"> <table name="tb2" dataNode="dnTest2,dnTest3" rule="rule1" /> </schema> <!-- 数据节点定义,数据节点由数据源和其他一些参数组织而成。--> <dataNode name="dnTest1"> <property name="dataSource"> <dataSourceRef>dsTest[0]</dataSourceRef> </property> </dataNode> <dataNode name="dnTest2"> <property name="dataSource"> <dataSourceRef>dsTest[1]</dataSourceRef> </property> </dataNode> <dataNode name="dnTest3"> <property name="dataSource"> <dataSourceRef>dsTest[2]</dataSourceRef> </property> </dataNode> <!-- 数据源定义,数据源是一个具体的后端数据连接的表示。--> <dataSource name="dsTest" type="mysql"> <property name="location"> <location>10.10.3.154:3306/dbtest1</location> <!--注意:替换为您的MySQL IP和Port--> <location>10.10.3.154:3306/dbtest2</location> <!--注意:替换为您的MySQL IP和Port--> <location>10.10.3.154:3306/dbtest3</location> <!--注意:替换为您的MySQL IP和Port--> </property> <property name="user">test</property> <!--注意:替换为您的MySQL用户名--> <property name="password"></property> <!--注意:替换为您的MySQL密码--> <property name="sqlMode">STRICT_TRANS_TABLES</property> <!--连接的SQL模式--> </dataSource> </cobar:schema>
rule.xml配置如下(本文仅以数字类型的id字段作为拆分字段,将数据拆分到两个库中。)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cobar:rule SYSTEM "rule.dtd"> <cobar:rule xmlns:cobar="http://cobar.alibaba.com/"> <!-- 路由规则定义,定义什么表,什么字段,采用什么路由算法。--> <tableRule name="rule1"> <rule> <columns>id</columns> <algorithm><![CDATA[ func1(${id})]]></algorithm> </rule> </tableRule> <!-- 路由函数定义,应用在路由规则的算法定义中,路由函数可以自定义扩展。--> <function name="func1" class="com.alibaba.cobar.route.function.PartitionByLong"> <property name="partitionCount">2</property> <property name="partitionLength">512</property> </function> </cobar:rule>
server.xml配置如下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cobar:server SYSTEM "server.dtd"> <cobar:server xmlns:cobar="http://cobar.alibaba.com/"> <!--定义Cobar用户名,密码--> <user name="test"> <property name="password">test</property> <property name="schemas">dbtest</property> </user> </cobar:server>
启动Cobar
./bin/startup.sh
查看logs目录下stdout.log, 启动成功日志如下
cat logs/stdout.log
23:49:49,183 INFO ===============================================
23:49:49,193 INFO Cobar is ready to startup ...
23:49:49,193 INFO Startup processors ...
23:49:49,434 INFO Startup connector ...
23:49:49,445 INFO Initialize dataNodes ...
23:49:49,893 INFO dnTest1:0 init success
23:49:50,103 INFO dnTest3:0 init success
23:49:50,293 INFO dnTest2:0 init success
23:49:50,326 INFO CobarManager is started and listening on 9066
23:49:50,335 INFO CobarServer is started and listening on 8066
23:49:50,336 INFO ===============================================
访问Cobar同访问MySQL的方式完全相同, 常用访问方式如下
mysql -utest -ptest -P8066 -Ddbtest
用户名、密码和库都在server.xml配置文件中配置过
#JDBC(建议5.1以上的mysql driver版本)
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://10.10.3.154:8066/dbtest", "test", "test");
SQL执行示例,执行语句时与使用传统单一数据库无区别
insert into tb1 (id, gmt) values (1, now());
insert into tb2 (id, val) values (1, "part1");
insert into tb2 (id, val) values (2, "part1"), (513, "part2");
对于dbtest来说数据是全的
而对dbtest2和dbtest2来说就是被分割过的。
详细的文档访问
http://code.alibabatech.com/wiki/pages/viewpage.action?pageId=7671478