据说该产品在阿里的B2B上已经运行3年之久,通过Cobar中间件,可以像传统数据库一样为分布式数据库集群提供海量数据服务,据称Cobar集群每天处理50亿次的SQL请求。

该中间件开源与2012年6月19日,可惜我现在才玩上。。。出于每次玩完一个东西之后都喜欢写点总结之类的,所以该文是我的一些心得体会以及碰到的问题的解决办法,当然阿里既然开源,也提供了文档资料,不过这里并没有问题的解决办法,而且,我感觉这个文档有点问题,具体我后面再说。

1.软件需求:

MYSQL:5.1以上

JDK:1.6以上

Cobar:源码(我的是1.2.4版本)放在192.168.213.9号节点上

2.数据库准备:(即datanode)——我这是一个虚拟机,IP:192.168.213.201

建立数据库的脚本如下:

dbtest1——单独数据库,存放tb1的数据

dbtest2,dbtest3——两个数据库,共同存放tb2的数据

createdatabasedbtest1;

usedbtest1;

createtabletb1(

idintnotnull,

gmt   datetime);

createdatabasedbtest2;

usedbtest2;

createtabletb2(

idintnotnull,

valvarchar(256));

createdatabasedbtest3;

usedbtest3;

createtabletb2(

idintnotnull,

valvarchar(256));3.Cobar配置

解压缩之后就可以进入文件夹进行配置了(在节点192.168.213.9上配置)

修改schema.xml文件如下:(因为我的设置跟默认吻合,因此我只需要修改这个文件)

xml version='1.0'encoding='UTF-8'?>xmlns:cobar='http://cobar.alibaba.com/'>name='dbtest'dataNode='dnTest1'>name='tb2'dataNode='dnTest2,dnTest3'rule='rule1'/>

name='dnTest1'>name='dataSource'>dsTest[0]name='dnTest2'>name='dataSource'>dsTest[1]name='dnTest3'>name='dataSource'>dsTest[2]

name='dsTest'type='mysql'>name='location'>192.168.213.201:3306/dbtest1192.168.213.201:3306/dbtest2192.168.213.201:3306/dbtest3name='user'>rootname='password'>

name='sqlMode'>STRICT_TRANS_TABLES

必要的解释:

1.我们从后往前看,最后定义的是数据源dataSource,其实这里可以定义多个,不同的数据源对应不同的数据库实例(注意数据库实例与数据库的区别,有兴趣的可以找本书看下),一个数据源可以包含多个数据库schema(这里schema和database是有区别的,有人比方说schema是仓库,database是房子,tb是房子里的床,很形象。不过这里我们可以看成就是database),比如我这里就是一个数据库实例,三个schema(仓库或者房子)。这里user和password我们后面再解释。

2.定义好了数据源之后,也就是生成了一个数组,然后我们将数组的每一个元素生成一个dataNode,这是一个非常棒的设计,这样就能把一个数据库实例中的多个数据库分离开来,下一步我么就要用。

3.第三步就是定义schema,也就是Cobar的初衷,生成一个底层有多个数据库组成的分布式数据库,但是用户看到的是跟传统数据库一样的一个数据库,看完定义之后也许有人会问为啥没有tb1,这里解释一下:没有tb1其实是因为第一行已经说明了,第一行的意思是除了下面定义的表(如tb2)需要按既定的rule(如rule1)去对应的数据节点(dnTest2,dnTest3)路由找到相应数据之外,其余的表(tb1)都是在dataNode(dnTest1)上。而这里的dataNode定义在上一步中已经完成的。从定义上看,我们将要生成了一个名叫dbtest的schema,也即数据库,这就是Cobar的目标。好了,配置完了之后就可以启动了

[root@localhost bin]# ./startup.sh'/usr/java/jdk1.6.0_31/bin/java'-Dcobar.home='/home/wuyanzan/source/cobar-server-1.2.6'-classpath'/home/wuyanzan/source/cobar-server-1.2.6/conf:/home/wuyanzan/source/cobar-server-1.2.6/lib/classes:/home/wuyanzan/source/cobar-server-1.2.6/lib/cobar-common-1.2.6.jar:/home/wuyanzan/source/cobar-server-1.2.6/lib/cobar-config-1.2.6.jar:/home/wuyanzan/source/cobar-server-1.2.6/lib/cobar-net-1.2.6.jar:/home/wuyanzan/source/cobar-server-1.2.6/lib/cobar-parser-1.2.6.jar:/home/wuyanzan/source/cobar-server-1.2.6/lib/cobar-route-1.2.6.jar:/home/wuyanzan/source/cobar-server-1.2.6/lib/cobar-server-1.2.6.jar:/home/wuyanzan/source/cobar-server-1.2.6/lib/log4j-1.2.16.jar:/home/wuyanzan/source/cobar-server-1.2.6/lib/slf4j-api-1.6.4.jar:/home/wuyanzan/source/cobar-server-1.2.6/lib/slf4j-log4j12-1.6.4.jar'-server-Xms1024m-Xmx1024m-Xmn256m-Xss128k-XX:+AggressiveOpts-XX:+UseBiasedLocking-XX:+UseFastAccessorMethods-XX:+DisableExplicitGC-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:+CMSParallelRemarkEnabled-XX:+UseCMSCompactAtFullCollection-XX:+UseCMSInitiatingOccupancyOnly-XX:CMSInitiatingOccupancyFraction=75com.alibaba.cobar.CobarStartup>>'/home/wuyanzan/source/cobar-server-1.2.6/logs/console.log'2>&1&然后进logs文件夹查看启动情况

17:19:06,623INFO===============================================17:19:06,624INFOCobarisready to startup...17:19:06,624INFOStartupprocessors...17:19:07,047INFOStartupconnector...17:19:07,049INFOInitializedataNodes...17:19:07,068INFO dnTest1:0init success17:19:07,069INFO dnTest3:0init success17:19:07,070INFO dnTest2:0init success17:19:07,077INFOCobarManagerisstartedandlistening on906617:19:07,078INFOCobarServerisstartedandlistening on806617:19:07,078INFO===============================================17:19:07,113INFO[thread=Processor1-H0,class=ServerConnection,host=127.0.0.1,port=57823,schema=null]'_HEARTBEAT_USER_'login success说明启动成功,也就是说现在Cobar在192.168.213.9号节点上已经部署好了,对用户来说,该节点上已经有了一个mysql数据库schema,里面包含了两张表:tb1,tb2,database的名字可以从上面说到的schema.xml中看到(这里我是按默认设置,当然也可以修改),具体如下:

# mysql -h 192.168.213.9 -utest -ptest -P8066 -Ddbtest

mysql> show databases;+----------+|DATABASE|+----------+|dbtest|+----------+

mysql>usedbtest;Databasechangedmysql>show tables;+------------------+|Tables_in_dbtest|+------------------+|tb1||tb2|+------------------+看到没,Cobar让原本在虚拟机192.168.213.201上的三个数据库dbtest1,dbtest2,dbtest3从外表上看转移到了192.168.213.9上来了,而且合并成了一个数据库dbtest,完了之后我们还可以对dbtest进行操作,比如我们按资料上来:

mysql>insertintotb1(id,gmt)values(1,now());#向表tb1插入一条数据

mysql>insertintotb2 (id, val)values(1,'part1');                 #向表tb2插入一条数据

mysql>insertintotb2 (id, val)values(2,'part1'), (513,'part2'); #向表tb2同时插入多条数据然后我们查看下:

mysql>select*fromtb1;+----+---------------------+|id|gmt|+----+---------------------+|1|2012-11-0708:32:48|+----+---------------------+

mysql>select*fromtb2;+-----+-------+|id|val|+-----+-------+|1|part1||2|part1||513|part2|+-----+-------+看到没,跟操作传统数据是一样一样的,但是我们再到192.68.213.201上去看看,看这里发生了什么

mysql>show databases;+--------------------+|Database|+--------------------+|information_schema||dbtest1||dbtest2||dbtest3||mysql||test||tpcw2|+--------------------+

mysql>usedbtest1;Databasechangedmysql>show tables;+-------------------+|Tables_in_dbtest1|+-------------------+|tb1|+-------------------+

mysql>select*fromtb1;+----+---------------------+|id|gmt|+----+---------------------+|1|2012-11-0708:32:48|+----+---------------------+

mysql>usedbtest2;Databasechangedmysql>show tables;+-------------------+|Tables_in_dbtest2|+-------------------+|tb2|+-------------------+

mysql>select*fromtb2;+----+-------+|id|val|+----+-------+|1|part1||2|part1|+----+-------+

mysql>usedbtest3;Databasechangedmysql>show tables;+-------------------+|Tables_in_dbtest3|+-------------------+|tb2|+-------------------+

mysql>select*fromtb2;+-----+-------+|id|val|+-----+-------+|513|part2|+-----+-------+看,tb2因为是dbtest2,dbtest3共同存储,因此在192.168.213.9上的insert  tb2的操作就被分流写入到这两个数据库中了(这里Cobar用的是hash然后取模)。

是不是很强大。。。。。

4.多余的话:

跟阿里官方给出的例子不同,我自己弄的时候是将Cobar部署在于数据库不同的机子上,不过我也将Cobar单节点部署试用过了,需要说明的是,对于单节点部署,schema.xml的配置和多机部署不同,下面我一一给出解释:

1.单节点部署

我上面已经说过阿里给出的官方例子有点问题(我不知道我理解对没!!),他那个例子单机部署用的是本机IP,其实这有点多此一举,因为mysql默认是监听127.0.0.1的,所以对于单节点配置,schema.xml中数据源部分应该是这样:

name='dsTest'type='mysql'>name='location'>127.0.0.1:3306/dbtest1127.0.0.1:3306/dbtest2127.0.0.1:3306/dbtest3name='user'>rootname='password'>111111name='sqlMode'>STRICT_TRANS_TABLES然后启动之后直接进入即可

# mysql -h 127.0.0.1 -utest -ptest -P8066 -Ddbtest

至于你非要用本机IP可不可以,我下面会说到。2.多机部署

跟单节点部署不同,多机部署涉及到mysql的远程连接的问题,当然阿里官方默认我们用户已经知道这些,好吧!

如我的用例,192.168.213.201当做数据库实际存放点,192.168.213.9只是Cobar虚拟的数据库,因此配置schema.xml在后者,也就是如下:

name='dsTest'type='mysql'>name='location'>192.168.213.201:3306/dbtest1192.168.213.201:3306/dbtest2192.168.213.201:3306/dbtest3name='user'>rootname='password'>name='sqlMode'>STRICT_TRANS_TABLES而这需要192.168.213.9能连接到192.168.213.201的mysql,这是需要配置的,我们需要给前者访问权限,这里需要用grant命令,好吧我当复习下功课:(注意这里我设置登录密码为空,所有schema.xml的password选项填空)

mysql>grant all on*.*to root@'192.168.213.9'identifiedby'';

即把该实例中所有数据库的所有操作权限(*.*)全部给192.168.213.9的root用户,而且不用密码(identifiedby'')然后我们就可以在database——mysql中的user表里查看了

mysql>selectuser,host,passwordfromuser;+------+-----------------------+-------------------------------------------+|user|host|password|+------+-----------------------+-------------------------------------------+|root|localhost|*FD571203974BA9AFE270FE62151AE967ECA5E0AA||root|localhost.localdomain|*FD571203974BA9AFE270FE62151AE967ECA5E0AA|||localhost.localdomain||||localhost|||root|192.168.213.201|||root|192.168.213.9|||root|node9||+------+-----------------------+-------------------------------------------+完了之后就可以像上面一样配置了。

好了,我们再来看下为啥我说用本机IP配置多此一举,我已经说过mysql默认允许localhost(127.0.0.1)登录的,如果你再用本机IP,你就需要再grant权限给192.168.213.201,这里我也不太确定,因为我这样弄了之后没成功,但是明明可以用127.0.0.1配置,为啥还要用本机IP呢?所以,我上面那样说。。。

好了,就白话这么多了,哦,对了,Cobar集群我还没用过,有时间再玩玩。。据说Cobar来源于Amoeba,后者是原阿里大牛陈思儒一个人开发的一个分布式数据库解决方案,在陈离职去盛大之后阿里召集人员进行改进,然后就有了Cobar。

按阿里的说法,分布式数据库中间件分为三个部分:Cobar——负责解决分布式数据库的性能,容量和高可用性,E&E(Erosa和Eromanga)——负责数据消费的时效性,Otter——负责跨机房的数据同步。可惜只开源了第一个。。。唉。。

以后努力进我大阿里啊。。。

cobar mysql部署方案_阿里巴巴分布式数据库解决方案——Cobar中间件配置详解 (转)...相关推荐

  1. hbase 二进制数据写入_分布式数据库HBase的架构设计详解(有彩蛋)

    原标题:分布式数据库HBase的架构设计详解(有彩蛋) 本文根据DBAplus社群第99期线上分享整理而成,文末还有好书送哦~ 讲师介绍 陈鸿威 云财经大数据CTO 曾任百度高级工程师,现主持设计开发 ...

  2. 云数据库RDS规格族配置详解

    阿里云RDS云数据库分为通用型和独享型两种规格族,通用型RDS实例与同一物理机上的其他通用型实例共享CPU和存储资源因此价格较为便宜,独享型RDS实例独占物理机资源金融.电商.政务.大中型互联网业务, ...

  3. dellr420部署os_戴尔dell poweredge r730服务器系统安装配置详解教程

    第一次给服务器安装的是ubantu系统: 首先我们开机进入小型BIOS设置一下RAID,或者进入服务器管理系统,在系统的BIOS中进行RAID设置: 开机后当看到出现< Ctrl > 时按 ...

  4. cobar mysql部署方案_Cobar的安装和配置步骤

    二:部署和配置Cobar 请确保机器上设置了JAVA环境变量JAVA_HOME 1.下载Cobar压缩文件并解压,进入conf目录可以看到schema.xml, rule.xml, server.xm ...

  5. 分布式事务解决方案Seata——AT模式详解

    需要了解分布式事务的同学可以关注我的专栏一起学习,欢迎沟通:分布式事务 阿里开源分布式事务一站式解决方案seata基础认识可参见:分布式事务2PC协议之--Seata方案基本认识 概述 在我的另一篇关 ...

  6. Oracle数据库备份和恢复配置详解

    本文Oracle讲述了数据库备份和恢复配置的详解过程,可能的失败及其解决方法. 失败类型 遇到的失败或错误分为两大类:物理和逻辑.物理错误一般是硬件错误或使用数据库的应用程序中的软件错误,而逻辑错误一 ...

  7. 赤壁 mysql纯端_赤壁服务端与客户端高手进阶详解

    我也是刚接触赤壁不久,端熟悉比较快,但是游戏还得慢慢去体验(不是很喜欢这类的,画面比较差,内容是不错).下面是我的一些个人看法: 织梦内容管理系统 服务端部分: 1.建议使用纯净端,用MYSQL的,很 ...

  8. mysql 半同步 原理_MySQL半同步复制原理与配置详解

    一 .异步.同步和半同步复制概念 异步复制(Asynchronous replication),MySQL默认的复制是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已 ...

  9. mysql安装的官方教程_MySQL官方教程及各平台的安装教程和配置详解入口

    官方文档入口: https://dev.mysql.com/doc/ 一般选择MySQL服务器版本入口: https://dev.mysql.com/doc/refman/en/ 在右侧有版本选择: ...

  10. mysql 点赞数据库设计_基于redis实现的点赞功能设计思路详解

    点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql等 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回mysq ...

最新文章

  1. SCCM 2007系列教程之二客户端安装之客户端请求安装
  2. 自动驾驶有量子飞跃式改进,马斯克称年内实现L5级别自动驾驶?
  3. 数据结构 - 二叉树的广度优先遍历算法(C++)
  4. 浅谈 Android 自定义锁屏页的发车姿势
  5. ie6/7 position relative overflow
  6. 没想到,我们的分布式缓存竟这样把注册中心搞垮!
  7. bzoj3551 [ONTAK2010]Peaks加强版 kruskal重构树
  8. 线段树和zkw线段树
  9. find_package()的查找*.cmake的顺序
  10. 【NOIP2017提高组】宝藏
  11. keil(arm)中配置c99方法 及 C99特性
  12. jquery api中文网址
  13. python垃圾邮件过滤_手把手教你用 Python 和 Scikit-Learn 实现垃圾邮件过滤
  14. 淘宝用户行为分析项目报告
  15. php 16进制 声明,php16进制转换
  16. [ANSYS]重力场考虑与否讨论
  17. 京东2017年4月7日笔试编程原题解析(站队、终结者C)
  18. 一种基于子序列的亚细胞定位预测的深度学习框架(DeepLncLoc: a deep learning frame work for long non-coding RNA subcellular)
  19. 问答推广技巧和注意事项问答平台推广的执行方案
  20. UVA 1626 括号序列

热门文章

  1. 电脑围棋领域的研究概述
  2. 数字中国城市巡礼之乌兰察布:红山口上的“草原硅谷”
  3. 《淘宝技术这十年》读书笔记 (一).淘宝网技术简介及来源
  4. 人智导(二):启发式搜索
  5. 怎么设计一种雷达成像系统代码_光纤阵列成像激光雷达系统的设计
  6. 在Ubuntu上安装D-link DWA-131驱动
  7. 闪迪u盘量产工具万能版_加密保护,更高性能!闪迪酷奂CZ74 U盘新品果然够惊艳...
  8. 计算机怎么获取权限删除文件,电脑删除文件需要获取trustedinstaller权限怎么回事...
  9. 《SAP CRM管理与实施指南》一一2.1 SAP CRM基础数据管理
  10. GLES3.0中文API-glMemoryBarrier