-
Notifications
You must be signed in to change notification settings - Fork 1.2k
FAQ
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。