注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oracle专业打杂

定会重回巅峰……

 
 
 

日志

 
 

Cobar for Mysql快速上手  

2015-09-17 10:35:18|  分类: MYSQL高级 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

JDK版本:jdk-6u45-linux-x64.bin(推荐使用1.6或以上版本,不要使用1.5及以下版本)

Cobar版本:cobar-server-1.2.7.tar.gz

Mysql版本:MySQL Database 5.6.25 TAR for Generic Linux (glibc2.5) x86 (64bit).zip

操作系统:RHEL5.5 x86_64

--------------------------------------------

注:这是Cobar说明文档中的一个小例子,可以在Github上找到相关的资料。

说明:dbtest1、dbtest2、dbtest3同时存在于端口为3307的实例上,外部访问通过8066端口访问mysql数据库。tb1存在于dbtest1数据库上,tb2同时存在于dbtest2、dbtest3上,通过切分规则将数据分片到dbtest2与dbtest3上。通过8066端口查看数据库的时候,只能看到dbtest数据库,并且也只能看到两张表tb1与tb2,Cobar在上层对三个真实数据库做了一个抽象,当成一个整体对外提供数据库服务。

Cobar for Mysql快速上手 - 卢大圣 - 把心放飞……

 

1、登陆127.0.0.1机器的3307端口,建立相应的库与表

建库建表语句如下
CREATE DATABASE dbtest1 DEFAULT CHARACTER SET utf8;
CREATE DATABASE dbtest2 DEFAULT CHARACTER SET utf8;
CREATE DATABASE dbtest3 DEFAULT CHARACTER SET utf8;
use dbtest1;
 CREATE TABLE tb1 (
  id int(11) NOT NULL,
  gmt datetime 
) ;
use dbtest2;
CREATE TABLE tb2 (
  id int(11) NOT NULL,
  val varchar(256) DEFAULT NULL
) ;
use dbtest3;
CREATE TABLE tb2 (
  id int(11) NOT NULL,
  val varchar(256) DEFAULT NULL
) ;

 2、安装Cobar

tar -zxvf cobar-server-1.2.7.tar.gz -C /usr/local/cobar-server-1.2.7
cd /usr/local/cobar-server-1.2.7
mkdir logs #不建立的话会报错
Cobar的目录结构如下
[root@localhost cobar-server-1.2.7]# tree
.
|-- bin
|   |-- restart.sh
|   |-- shutdown.sh
|   |-- startup.bat
|   `-- startup.sh
|-- conf
|   |-- log4j.xml
|   |-- rule.xml
|   |-- schema.xml
|   `-- server.xml
|-- lib
|   |-- cobar-server-1.2.7.jar
|   `-- log4j-1.2.17.jar
`-- logs
3、配置Cobar
[root@localhost conf]# vim server.xml 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cobar:server SYSTEM "server.dtd">
<cobar:server xmlns:cobar="http://cobar.alibaba.com/">
  <!-- 用户访问定义,用户名、密码、schema等信息。 -->
  <user name="root">
    <property name="password">123</property>
    <property name="schemas">dbtest</property>
  </user>
</cobar:server>
[root@localhost conf]# vim 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>127.0.0.1:3307/dbtest1</location>
      <location>127.0.0.1:3307/dbtest2</location>
      <location>127.0.0.1:3307/dbtest3</location>
    </property>
    <property name="user">root</property>
    <property name="password">123</property>
    <property name="sqlMode">STRICT_TRANS_TABLES</property>
  </dataSource>
</cobar:schema>
[root@localhost conf]# vim rule.xml 

<?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>

  <!-- 路由函数定义 -->
  <!--分片路由字段除以1023,得到的余数会是0~1023,折时候分两个片0~511的在第一个分片,512~1023的在第二个分片-->
  <function name="func1" class="com.alibaba.cobar.route.function.PartitionByLong">
    <property name="partitionCount">2</property>
    <property name="partitionLength">512</property>
  </function>
</cobar:rule>

4、启动Cobar
[root@localhost bin]# ./startup.sh 
"/usr/local/jdk1.6.0_45/bin/java" -Dcobar.home="/usr/local/cobar-server-1.2.7" -classpath "/usr/local/cobar-server-1.2.7/conf:/usr/local/cobar-server-1.2.7/lib/classes:/usr/local/cobar-server-1.2.7/lib/cobar-server-1.2.7.jar:/usr/local/cobar-server-1.2.7/lib/log4j-1.2.17.jar" -server -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+UseFastAccessorMethods -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 com.alibaba.cobar.CobarStartup >> "/usr/local/cobar-server-1.2.7/logs/console.log" 2>&1 &
[root@localhost bin]# 
[root@localhost bin]# ps -ef|grep cobar
root      3499     1  6 08:44 pts/1    00:00:00 /usr/local/jdk1.6.0_45/bin/java -Dcobar.home=/usr/local/cobar-server-1.2.7 -classpath /usr/local/cobar-server-1.2.7/conf:/usr/local/cobar-server-1.2.7/lib/classes:/usr/local/cobar-server-1.2.7/lib/cobar-server-1.2.7.jar:/usr/local/cobar-server-1.2.7/lib/log4j-1.2.17.jar -server -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+UseFastAccessorMethods -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 com.alibaba.cobar.CobarStartup
root      3525  3458  0 08:44 pts/1    00:00:00 grep cobar
5、测试验证
从8066端口查看Cobar的总体情况

[root@localhost bin]# /usr/local/mysql/bin/mysql -uroot -p123 -h127.0.0.1 -P8066
mysql> show databases;
+----------+
| DATABASE |
+----------+
| dbtest   |
+----------+
1 row in set (0.00 sec)

mysql> use dbtest;
mysql> show tables;
+------------------+
| Tables_in_dbtest |
+------------------+
| tb1              |
| tb2              |
+------------------+
2 rows in set (0.00 sec)

mysql> insert into tb1(id,gmt) values(1,now());
mysql> insert into tb1(id,gmt) values(2,now());
mysql> insert into tb1(id,gmt) values(3,now());

mysql> select * from tb1;
+----+---------------------+
| id | gmt |
+----+---------------------+
| 1 | 2015-09-17 10:21:19 |
| 2 | 2015-09-17 10:21:22 |
| 3 | 2015-09-17 10:21:25 |
+----+---------------------+
3 rows in set (0.00 sec)

mysql> use dbtest;
mysql> insert into tb2(id,val) values(1,'a');
mysql> insert into tb2(id,val) values(100,'b');
mysql> insert into tb2(id,val) values(300,'c');
mysql> insert into tb2(id,val) values(500,'d');
mysql> insert into tb2(id,val) values(600,'d');
mysql> insert into tb2(id,val) values(800,'e');
mysql> insert into tb2(id,val) values(1100,'f');

mysql> select * from tb2;
+------+------+
| id | val |
+------+------+
| 1 | a |
| 100 | b |
| 300 | c |
| 500 | d |
| 1100 | f |
| 600 | d |
| 800 | e |
+------+------+
7 rows in set (0.00 sec)

从3307端口上查看各库的情况

[root@localhost ~]# /usr/local/mysql/bin/mysql -uroot -p123 -S /data/3307/mysql.sock 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dbtest1            |
| dbtest2            |
| dbtest3            |
| mysql              |
| performance_schema |
| test               |
+--------------------+
7 rows in set (0.00 sec)

mysql> use dbtest1;
mysql> show tables;
+-------------------+
| Tables_in_dbtest1 |
+-------------------+
| tb1               |
+-------------------+
1 row in set (0.00 sec)

mysql> select * from tb1;
+----+---------------------+
| id | gmt                 |
+----+---------------------+
|  1 | 2015-09-17 10:21:19 |
|  2 | 2015-09-17 10:21:22 |
|  3 | 2015-09-17 10:21:25 |
+----+---------------------+
3 rows in set (0.00 sec)

mysql> use dbtest2;
mysql> show tables;
+-------------------+
| Tables_in_dbtest2 |
+-------------------+
| tb2               |
+-------------------+
1 row in set (0.00 sec)

mysql> select * from tb2;
+------+------+
| id   | val  |
+------+------+
|    1 | a    |
|  100 | b    |
|  300 | c    |
|  500 | d    |
| 1100 | f    |
+------+------+
5 rows in set (0.00 sec)

mysql> use dbtest3;
mysql> show tables;
+-------------------+
| Tables_in_dbtest3 |
+-------------------+
| tb2               |
+-------------------+
1 row in set (0.00 sec)

mysql> select * from tb2;
+-----+------+
| id  | val  |
+-----+------+
| 600 | d    |
| 800 | e    |
+-----+------+
2 rows in set (0.00 sec)

  评论这张
 
阅读(41)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017