Skip to content
bucketli edited this page Jul 27, 2017 · 1 revision

1. 如何在多个cobar节点之间做负载均衡?

  应用程序只要采用标准mysql协议即可访问Cobar。对于负载均衡,可以采用多种方式实现。
  1.) 使用软负载,例如 LVS
  2.) 使用硬件设备,例如 F5
  3.) 客户端自定义负载均衡
  Cobar已实现一个命令接口show cobar_cluster,该接口返回该节点所在集群可服务的所有cobar节点及相应权重。客户端程序可以通过该接口获取集群所有节点状态及相应权重,然后再根据负责均衡算法向各Cobar节点创建连接进行访问,以此达到负责均衡的效果。详见产品文档3.4节show cobar_cluster。当然,集群各节点信息也可以通过记录在配置文件中,客户端程序去读取该配置文件获取。
  目前已实现了一个具有负责均衡功能的客户端产品-cobar.driver。cobar.driver通过show cobar_cluster命令从cobar节点获取该节点所在集群的所有可提供服务的节点ip以及相应的权重,然后根据各节点权重比例从中选择一个节点创建连接,以此实现节点间负载均衡的目的。

2. Cobar除了支持MySQL数据库,是否支持其他数据库?

  目前只支持MySQL作为数据节点。

3. Cobar支持事务吗?分布式事务如何实现的?

  单库事务完全支持,分布式事务不能保持强一致性。
  分布式事务采用两阶段执行,即分为执行阶段和提交阶段
  执行阶段:把前端连接上当前事务所使用到的后端连接绑定下来,并执行SQL语句
  提交阶段:将commit命令分发到这些绑定的后端连接中。
  在整个事务过程中,执行阶段出错,可以回滚。提交阶段出错不可以回滚。可以说只要是commit之前,执行出现不一致,cobar会自动回滚。

4. Cobar支持存储过程吗?

  存储过程没有做过测试,不推荐使用。

5. Cobar是否支持读写分离?

  读写分离目前版本不支持。以前的版本是支持的,考虑到读写分离后的同步延迟不可控,所以就去掉了。后续会考虑一下,这个作为一个需求,实现读写分离。

6. 如何确定SQL语句在Cobar中被路由到哪些库执行?

  在8066端口使用Cobar提供的explain语句,explain加上你所要执行的SQL,Cobar将会返回改SQL将被路由到哪些库执行而并不真正执行SQL。

7.cobar-manager如何部署?

  1.修改WEB-INF/或者源码src/main/resource/中log4j日志输出路径,日志级别调整为INFO及以上
  2.将WEB-INF/或者源码src/main/resource/中的cluster.xml, cobar.xml, user.xml,property.xml拷贝到某个固定目录,比如/home/admin/xml/
  3.修改WEB-INF/xmlpath.properties中文件内容为xmlpath=/home/admin/xml/
  4.源码打包,将war包放入web容器执行
  5.user.xml记录的初始用户名和密码为root/123456

8.日志出现Invaild Datasource?

  执行sql时如果遇到此错误,则是数据源datasource配置有误(如ip,port,user,password错误),请配合启动错误日志检查相关配置。

9.为什么经常抛出异常“connection reset” "connection link failure" "broken pipe"?

  一般来说以上问题都是由于连接池配置不对引起的。可能是应用连接池配置了但是没有生效,也可能是应用连接池参数没有按照我们推荐的参数进行设置

10.为什么通过cobar我无法进行数据dump?

  cobar目前不支持mysqldump命令,请直接基于DB进行dump。
Clone this wiki locally