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

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)

<!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>192.168.15.130:3306/dbtest1</location>
      <location>192.168.15.130:3306/dbtest2</location>
      <location>192.168.15.130:3306/dbtest3</location>
    </property>
    <property name="user">root</property>
    <property name="password">123456</property>
    <property name="sqlMode">STRICT_TRANS_TABLES</property>
  </dataSource>
 
</cobar:schema>

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

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

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

<!DOCTYPE cobar:server SYSTEM "server.dtd">
<cobar:server xmlns:cobar="http://cobar.alibaba.com/">
 
  <!-- 系统参数定义,服务端口、管理端口,处理器个数、线程池等。 -->
  <!--
  <system>
    <property name="serverPort">8066</property>
    <property name="managerPort">9066</property>
    <property name="initExecutor">16</property>
    <property name="timerExecutor">4</property>
    <property name="managerExecutor">4</property>
    <property name="processors">4</property>
    <property name="processorHandler">8</property>
    <property name="processorExecutor">8</property>
    <property name="clusterHeartbeatUser">_HEARTBEAT_USER_</property>
    <property name="clusterHeartbeatPass">_HEARTBEAT_PASS_</property>
  </system>
  -->
 
  <!-- 用户访问定义,用户名、密码、schema等信息。 -->
  <user name="test">
    <property name="password">test</property>
    <property name="schemas">dbtest</property>
  </user>
  <!--
  <user name="root">
    <property name="password"></property>
  </user>
  -->
 
  <!-- 集群列表定义,指定集群节点的主机和权重,用于集群间的心跳和客户端负载均衡。 -->
  <!--
  <cluster>
    <node name="cobar1">
      <property name="host">127.0.0.1</property>
      <property name="weight">1</property>
    </node>
  </cluster>
   -->
  <!-- 隔离区定义,可以限定某个主机上只允许某个用户登录。 -->
  <!--
  <quarantine>
    <host name="1.2.3.4">
      <property name="user">test</property>
    </host>
  </quarantine>
  -->
 
</cobar:server>

(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());

时间: 2024-10-03 16:52:19

Cobar介绍、安装及使用的例子的相关文章

介绍安装WebSphere Application Server的主映像过程

本文回顾了 Installation Manager 的基本组件,并介绍安装 http://www.aliyun.com/zixun/aggregation/13387.html">WebSphere Application Server 的主映像的过程,可以先将其部署到生产环境,然后再服务于其他地方.这样可便于在虚拟化和非虚拟化环境中进行大量部署. 本文所述的过程使用 IBM Installation Manager,且不需要将其安装在每个系统上.本文介绍如何将重要的 Installat

数据库工具sysbench安装教程和性能测试例子_Mysql

sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.关于这个项目的详细介绍请看:http://sysbench.sourceforge.net. 它主要包括以下几种方式的测试: 1.cpu性能 2.磁盘io性能 3.调度程序性能 4.内存分配及传输速度 5.POSIX线程性能 6.数据库性能(OLTP基准测试) 目前sysbench主要支持 MySQL,pgsql,oracle 这3种数据库. 一.安装 首先,在 http://sour

scrapy-redis 安装 及使用 结合例子解释

scrapy-redis安装及配置 scrapy-redis 的安装 pip install scrapy-redis easy_install scrapy-redis 下载 http://redis.io/download 版本推荐 stable 3.0.2 运行redis redis-server redis.conf 清空缓存 redis-cli flushdb scrapy配置redis settings.py配置redis(在scrapy-redis 自带的例子中已经配置好) SCH

分布式文件系统MogileFS介绍/安装配置/使用/管理

MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上. MogileFS由3个部分组成: 第1个部分是server端,包括mogilefsd和mogstored两个程序.前者即是mogilefsd的tracker,它将一些全局信息保存在数据库里,例如站点domain,class,host等.后者即是存储节点(store node),它其实是个HTTP Daemon,默认侦听在7500端口,接受客户端的文件备份请求.在安装

Linux下手动编译安装PHP扩展的例子分享_php实例

开发和部署的过程中可能会经常出现需要额外安装PHP扩展的情况,下边以PDO_MYSQL为例,介绍下手动编译安装PHP扩展: 先到http://pecl.php.net/找需要的版本,我用的是稳定的版本.要先看看说明,特别是要注意mysql的php的版本. 复制代码 代码如下: wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz tar xzvf PDO_MYSQL-1.0.2.tgz cd PDO_MYSQL-1.0.2 /usr/local/php

Memcached 入门介绍(安装与配置)_服务器其它

Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载. 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态.数据库驱动网站的速度. Memcached基于一个存储键值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 下面来了解下Memcached怎么用~~ 一.准备工作到http://www.jb51.net/softs/205838.html 下载memc

C++ stringstream介绍,使用方法与例子

From: http://www.usidcbbs.com/read-htm-tid-1898.html   C++引入了ostringstream.istringstream.stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件. istringstream类用于执行C++风格的串流的输入操作. ostringstream类用于执行C风格的串流的输出操作. strstream类同时可以支持C风格的串流的输入输出操作. istringstream类是从istre

sysbench-0.4.12编译安装和CPU测试例子分享_Mysql

一.获取安装包 最近的版本为0.4.12,下载地址:http://sourceforge.net/projects/sysbench/ 二.编译安装 我的环境为RHEL6.2 + MySQL 5.6.16,搭建参考上两篇文章<<RHEL6.2编译安装MySQL 5.6.16>><<MySQL Benchmark安装DBI组件>>,安装步骤如下: 复制代码 代码如下: [root@beanvm ~]# tar -xvf sysbench-0.4.12.tar.

Laravel 5.2数据库安装配置及简单例子

1.简介 Laravel 让连接多种数据库以及对数据库进行查询变得非常简单,不论使用原生 SQL.还是查询构建器,还是 Eloquent ORM.目前,Laravel 支持四种类型的数据库系统: MySQL Postgres SQLite SQL Server 配置 Laravel 让连接数据库和运行查询都变得非常简单.应用的数据库配置位于config/database.php.在该文件中你可以定义所有的数据库连接,并指定哪个连接是默认连接.该文件中提供了所有支持数据库系统的配置示例. 默认情况