Git Product home page Git Product logo

cobar's Introduction

License Project Status

What is Cobar?

Cobar is a proxy for sharding databases and tables,compatible with MySQL protocal and MySQL SQL grama,underlying storage only support MySQL for support foreground business more simple,stable,efficient and safety。

  • Sharding You can add new MySQL instance as your business grows.

  • High availability Both Cobar server and underlying MySQL is clustered,business will not suffer with single node fail.

  • Compatible with MySQL protocol Use Cobar as MySQL. You can replace MySQL with Cobar to power your application.

Roadmap

Read the Roadmap.

Architecture

Quick start

Read the Quick Start.

Documentation

Contributing

Contributions are welcomed and greatly appreciated. See CONTRIBUTING.md for details on submitting patches and the contribution workflow.

Mailing list

[email protected]

License

Cobar is under the Apache 2.0 license. See the LICENSE file for details.

cobar's People

Contributors

88250 avatar bucketli avatar evenx86 avatar hexianmao avatar hongyuanw avatar jart avatar linkerlin avatar liuxinglanyue avatar oudb avatar sawyer2011 avatar wenshao avatar wfxiang08 avatar zhuchao941 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cobar's Issues

使用cobar查询结果顺序问题

我用cobar按照例子做分片,然后查询结果输出每次都不一样,例如第一次是分片1的结果+分片2的结果,第二次可能是分片2的结果+分片的1的结果

对于代理返回的结果是否需要在程序里再做排序

还有分页问题有没有比较好的解决方案呢

心跳配置不起作用

通过9066端口执行

show @@heartbeat

timeout永远是-1

+--------+-------+----------------+------+---------+-------+--------+---------+--------------+------------------+-------+
| NAME   | TYPE  | HOST           | PORT | RS_CODE | RETRY | STATUS | TIMEOUT | EXECUTE_TIME | LAST_ACTIVE_TIME | STOP  |
+--------+-------+----------------+------+---------+-------+--------+---------+--------------+------------------+-------+
| dnTest | MYSQL | 192.168.66.204 | 3301 |       0 |     0 | idle   |      -1 | 0,0,0        | NULL             | false |
+--------+-------+----------------+------+---------+-------+--------+---------+--------------+------------------+-------+
1 row in set (0.00 sec)

配置文件

<!DOCTYPE cobar:schema SYSTEM "schema.dtd">
<cobar:schema xmlns:cobar="http://cobar.alibaba.com/">

  <!-- schema定义 -->
  <schema name="dbtest" dataNode="dnTest">
  </schema>

  <!-- 数据节点定义,数据节点由数据源和其他一些参数组织而成。-->
  <dataNode name="dnTest">
    <property name="dataSource">
      <dataSourceRef>dsTest</dataSourceRef>
    </property>
    <property name="heartbeat">select user()</property>
  </dataNode>

  <!-- 数据源定义,数据源是一个具体的后端数据连接的表示。-->
  <dataSource name="dsTest" type="mysql">
    <property name="location">
      <location>192.168.66.204:3301/dbtest1</location>
    </property>
    <property name="user">cobar</property>
    <property name="password">cobar</property>
    <property name="sqlMode">STRICT_TRANS_TABLES</property>
  </dataSource>

</cobar:schema>

用的版本是cobar-server-1.2.7的二进制包

ERROR 1003 (HY000): EOFException

使用字段查询时,报EOFException异常,比如下面一条语句
select * from rtb_daily_report_audience where campaign_id=89085;

lib和log文件夹在哪里

最近在做分布式的mysql,想用cobar,可是怎么下载的cobar-server中怎么没有lib和log这两个文件夹?

为什么cobar-server-1.2.7在win7 64位系统上运行一段时间后cpu会飙升到90%以上

试着在win7 64位系统上运行startup.bat,前面2个小时cpu调用0%,但是占用内存呈4KB倍数的形式递增,后面内存达到300,000KB以上之后cpu直接会达到80%以上。相关没有任何cobar的指令操作,单纯是开启了cobar而已。
同样在windows server 2008系统下面没有如上现象,运行良好。
请问,针对win7系统,cobar源码内是否会有相关bug。

cobar server本身的负载问题

三台windows 2008服务器,各自安装了三个cobar节点作为集群之后,
利用LoadRunner压力测试工具测试含有cobar的数据库访问web服务,
测试1500个人的并发量,cobar调用的java.exe 对cpu的占用处于5%以下基本是0%。
但是占用内存不断飙升,到了500,000kb之后,利用cobar获取数据库表内容会无法获取,
进入长时间的等待,数据库服务器及web服务器均没有问题。进入dos命令,
连接刚才所使用且内存达到500,000多kb的cobar节点,发show cobar_status;运行结果显示为on正常。
但是利用show cobar_cluster;命令发现结果为Empty set,返回为false,
正常情况下执行该命令应该是会显示各个节点的信息。目前就只发现内存升到500多m,
show cobar_cluster;返回false。重启该cobar节点之后又恢复正常,可以读取表数据了。
请问,如上所说问题,开发人员有没遇到过,或者说这样就代表该cobar节点已经到瓶颈,某个模块出问题了。如果是这样的话,我要如何监测,到达该瓶颈的时候是否有相关的心跳及控制功能?

cobar cluster 配置没生效

cobar cluster 配置没有生效,cobar日志未提示错误。请问cobar cluster之间是通过什么协议做心跳的?配置如下;


192.160.28.44
1


192.160.28.45
2


执行结果:
mysql> show cobar_cluster;
Empty set (0.01 sec)

CharsetUtils

image

But Percona-5.6
mysql> SELECT id, collation_name FROM information_schema.collations ORDER BY id ASC;

image

我使用了partitionbystring的问题

我想请问一下。。若使用了这一个作为分表的规则 ,那若我想在这一个集群里面再增加两张物理表来扩充这样可以吗?比如user_info 现在它的物理表是uinfo1 uinfo2 uinfo3 我再在后面再加入uinfo4 这样可以吗?

启动cobar后不能执行

按照配置启动startup.bat后,看日志正常启动。接下来说访问Cobar同访问MySQL的方式完全相同,采用#命令行
mysql -h192.168.0.1 -utest -ptest -P8066 -Ddbtest。这句是在哪里输入呢,初学不懂忘解释一下。谢谢!

fork了一下,做了一个cobar的根据id-generator生成的固定id序列从而使节点路由具有一致性的功能

Hi
由于前一段时间想研究业界的一些分库分表的解决方案,然后找到了cobar,发现很不错于是研究了一下cobar的文档和源码。研究过程中发现cobar对于数据库平滑动态平滑扩容和迁移的支持不是很好,因为cobar中很难做到在节点的metadata改变后,路由算法依旧保持一致性。这里我参考了mongodb的id-generator算法,根据time、process-id、random number、machine-id生成的一个id序列作为table中一行的id,cobar根据id序列获取到对应的machine-id从而实施路由。这样一来我们便可以实施平滑扩容和迁移。

这个想法可能有一些问题,目前fork了一下实现了一个demo。
github: https://github.com/nyankosama/cobar-with-id-node-mapping
请大家多多指教!

路由规则不起作用

以下是schema的配置:

路由规则的配置: id 2 512

结果(日志):
16:51:07,247 DEBUG [thread=Processor2-H0,class=ServerConnection,host=172.17.138.31,port=46673,schema=dbtest]insert into tb2 values(1,'p1')
16:51:07,263 DEBUG [thread=Processor2-H0,class=ServerConnection,host=172.17.138.31,port=46673,schema=dbtest]insert into tb2 values(1,'p1'), route={
1 -> dnTest2.default{insert into tb2 values(1,'p1')}
2 -> dnTest3.default{insert into tb2 values(1,'p1')}
}
问题:
为什么路由到两个表中了?路由规则没有起作用?配置错了?

有谁遇到过,用命令行连接正常,用mysql driver却显示Unknown database 'dbtest' 异常的?

rt, 求解答

String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://192.168.39.144:8066/dbtest";
String user = "root";
String password = "yscyfy";

try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, password);

if (!conn.isClosed())
    System.out.println("Succeeded connecting to the Database!");

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'dbtest'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3996)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1284)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137)
at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:776)
at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at JDBCTest.main(JDBCTest.java:13)

关于 driver 包的问题

"driver
是一个客户端jar包,是对mysql jdbc driver的封装,实现客户端对cobar server集群LB和HA的支持。"
看了下源码,感觉在driver包只是实现了LB的支持,并没有实现对HA的支持。对HA的支持是在server下。 是这样的吗?

一些小问题??

我按照网上说的,已经在一台服务器上实现了,想问个比较low的问题,是不是所有的mysql都要设置成一样的密码?该怎么做集群?是不是要在所有的集群上的服务器上都安装cobar?还是只用在一个服务器上安装就行了??

DB取序列号路由错误

  1. 我有一个测试表 TA,在schema.xml中,表TA的datanode配置为dn1,dn2,dn3,并且该表设置为autoincrement="true"
  2. 在sequence_db_conf.properties中,我配置TA=dn4 //即序列MACATSEQ_TA从dn4中取

测试

  1. 采用 insert into TA(columnA,columnB)values('a','b'),执行正确,每次都能从dn4中获取TA的自增ID
  2. 执行SELECT mycat_seq_nextval('TA'); //执行错误,该语句被随机路由到dn1,dn2,dn3,而没有路由到dn4

【cobar】dev_1.2.8_20140805,maven工程-cobar-server缺少jar包

向大家求解决办法。
问题:cobar的今年的这个分支,我下载后,cobar-server的maven工程,编译有错误。
以下jar包,不能加载。
import com.alibaba.cobar.model.tt.TableConfig;
import com.alibaba.cobar.config.util.SplitUtil;
import com.alibaba.cobar.model.tt.RuleAlgorithm;
另外,提示CobarNodeConfig,没有这个类呀?

Cobar节点部分初始化失败

总共有16个节点,其中4个每次初始化都失败,这四个节点单独跑4节点Cobar时又是可以的,stdout.log记录如下:

09:48:53,680 INFO  ===============================================
09:48:53,680 INFO  Cobar is ready to startup ...
09:48:53,680 INFO  Startup processors ...
09:48:53,748 INFO  Startup connector ...
09:48:53,752 INFO  Initialize dataNodes ...
09:48:55,479 WARN  dnTest9:0 init error.
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at com.alibaba.cobar.mysql.bio.MySQLChannel.connect(MySQLChannel.java:172)
    at com.alibaba.cobar.mysql.MySQLDataSource.getChannel(MySQLDataSource.java:159)
    at com.alibaba.cobar.mysql.MySQLDataNode.initSource(MySQLDataNode.java:357)
    at com.alibaba.cobar.mysql.MySQLDataNode.init(MySQLDataNode.java:78)
    at com.alibaba.cobar.CobarServer.startup(CobarServer.java:124)
    at com.alibaba.cobar.CobarStartup.main(CobarStartup.java:36)
09:48:55,484 ERROR #!Cobar#dnTest9 init failure
09:48:57,199 WARN  dnTest8:0 init error.
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at com.alibaba.cobar.mysql.bio.MySQLChannel.connect(MySQLChannel.java:172)
    at com.alibaba.cobar.mysql.MySQLDataSource.getChannel(MySQLDataSource.java:159)
    at com.alibaba.cobar.mysql.MySQLDataNode.initSource(MySQLDataNode.java:357)
    at com.alibaba.cobar.mysql.MySQLDataNode.init(MySQLDataNode.java:78)
    at com.alibaba.cobar.CobarServer.startup(CobarServer.java:124)
    at com.alibaba.cobar.CobarStartup.main(CobarStartup.java:36)
09:48:57,200 ERROR #!Cobar#dnTest8 init failure
09:48:57,646 INFO  dnTest5:0 init success
09:48:57,977 INFO  dnTest4:0 init success
09:48:58,209 INFO  dnTest7:0 init success
09:48:58,351 INFO  dnTest6:0 init success
09:48:58,805 INFO  dnTest1:0 init success
09:48:59,479 INFO  dnTest3:0 init success
09:49:00,963 INFO  dnTest2:0 init success
09:49:02,005 INFO  dnTest16:0 init success
09:49:03,077 INFO  dnTest15:0 init success
09:49:03,489 INFO  dnTest13:0 init success
09:49:03,959 INFO  dnTest14:0 init success
09:49:06,597 WARN  dnTest11:0 init error.
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at com.alibaba.cobar.mysql.bio.MySQLChannel.connect(MySQLChannel.java:172)
    at com.alibaba.cobar.mysql.MySQLDataSource.getChannel(MySQLDataSource.java:159)
    at com.alibaba.cobar.mysql.MySQLDataNode.initSource(MySQLDataNode.java:357)
    at com.alibaba.cobar.mysql.MySQLDataNode.init(MySQLDataNode.java:78)
    at com.alibaba.cobar.CobarServer.startup(CobarServer.java:124)
    at com.alibaba.cobar.CobarStartup.main(CobarStartup.java:36)
09:49:06,598 ERROR #!Cobar#dnTest11 init failure
09:49:07,427 INFO  dnTest12:0 init success
09:49:08,813 WARN  dnTest10:0 init error.
java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at com.alibaba.cobar.mysql.bio.MySQLChannel.connect(MySQLChannel.java:172)
    at com.alibaba.cobar.mysql.MySQLDataSource.getChannel(MySQLDataSource.java:159)
    at com.alibaba.cobar.mysql.MySQLDataNode.initSource(MySQLDataNode.java:357)
    at com.alibaba.cobar.mysql.MySQLDataNode.init(MySQLDataNode.java:78)
    at com.alibaba.cobar.CobarServer.startup(CobarServer.java:124)
    at com.alibaba.cobar.CobarStartup.main(CobarStartup.java:36)
09:49:08,815 ERROR #!Cobar#dnTest10 init failure
09:49:08,834 INFO  CobarManager is started and listening on 9066
09:49:08,842 INFO  CobarServer is started and listening on 8066
09:49:08,842 INFO  ===============================================

请问这应该是什么问题?

After add feature : utf8mb4

git diff --name-status master v1.2.7

M       README.md
D       doc/Cobar1.0.6-1.2.0_performance_data.xlsx
D       doc/Cobar1.2.0_performanc_report.docx
D       doc/Cobar_data_migration.2011.03.ppt
D       doc/Cobar_datasource_heartbeat - Alibaba Open Sesame.pdf
D       doc/Cobar_rule - Alibaba Open Sesame.pdf
M       server/assembly/bin/startup.bat
M       server/src/main/net/com/alibaba/cobar/net/FrontendConnection.java
M       server/src/main/server/com/alibaba/cobar/heartbeat/CobarDetectorAuthenticator.java
M       server/src/main/server/com/alibaba/cobar/heartbeat/MySQLDetectorAuthenticator.java
M       server/src/main/server/com/alibaba/cobar/mysql/CharsetUtil.java
M       server/src/main/server/com/alibaba/cobar/mysql/bio/MySQLChannel.java
M       server/src/main/server/com/alibaba/cobar/mysql/nio/MySQLConnection.java
M       server/src/main/server/com/alibaba/cobar/mysql/nio/MySQLConnectionAuthenticator.java

Then do some stuff for code review, I find server/src/main/net/com/alibaba/cobar/net/FrontendConnection.java

image

It means

197: get Index from the map of DBCharsetIndex
201: set the index of DBCharset to this.charsetIndex // my question is : FrontendConnection.java the property is this.charsetIndex. "v1.2.7 this.charsetIndex" retrieves from the map of CharsetUtil.CHARSET_TO_INDEX. But CharsetUtil of new version, shows two maps: CHARSET_TO_INDEX + DB_CHARSET_TO_INDEX.

server/src/main/server/com/alibaba/cobar/mysql/nio/MySQLConnectionAuthenticator.java from Line56 is more wired.

                // 设置字符集编码
                int charsetIndex = (packet.serverCharsetIndex & 0xff);
                String charset = CharsetUtil.getDbCharset(charsetIndex);
                if (charset != null) {
                    source.setCharsetIndex(charsetIndex);
                    source.setCharset(CharsetUtil.getCharset(charsetIndex));
                    source.setDbCharset(charset);

                } 

Handling "Index" is not clear so that it will make some errors probably. You can not ensure the indexes be the same from two maps(CHARSET_TO_INDEX + DB_CHARSET_TO_INDEX) .

Cobar init error

Hi, all
Cobar-server-1.2.7 can not initialize successfully, and error log is as following:

17:26:54,044 INFO Cobar is ready to startup ...
17:26:54,044 INFO Startup processors ...
17:26:54,069 INFO Startup connector ...
17:26:54,070 INFO Initialize dataNodes ...
17:26:54,116 WARN dnTest1:0 init error.
java.util.concurrent.ExecutionException: java.io.UnsupportedEncodingException: maccecias
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:202)
at com.alibaba.cobar.mysql.bio.MySQLChannel.connect(MySQLChannel.java:185)
at com.alibaba.cobar.mysql.MySQLDataSource.getChannel(MySQLDataSource.java:159)
at com.alibaba.cobar.mysql.MySQLDataNode.initSource(MySQLDataNode.java:357)
at com.alibaba.cobar.mysql.MySQLDataNode.init(MySQLDataNode.java:78)
at com.alibaba.cobar.CobarServer.startup(CobarServer.java:124)
at com.alibaba.cobar.CobarStartup.main(CobarStartup.java:36)
Caused by: java.io.UnsupportedEncodingException: maccecias
at java.lang.StringCoding.encode(StringCoding.java:341)
at java.lang.String.getBytes(String.java:916)
at com.alibaba.cobar.mysql.bio.MySQLChannel.sendAuth411(MySQLChannel.java:372)
at com.alibaba.cobar.mysql.bio.MySQLChannel.handshake(MySQLChannel.java:338)
at com.alibaba.cobar.mysql.bio.MySQLChannel.access$000(MySQLChannel.java:66)
at com.alibaba.cobar.mysql.bio.MySQLChannel$1.call(MySQLChannel.java:180)
at com.alibaba.cobar.mysql.bio.MySQLChannel$1.call(MySQLChannel.java:176)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
17:26:54,119 ERROR #!Cobar#dnTest1 init failure

Test environment:
os: linux
jdk: jdk7
mysql: 5.6

Thanks & Best Regards!

MySQLChannel 中 读取握手数据包出错

在CharseUtil中报错:

    //这里报了异常:java.lang.ArrayIndexOutOfBoundsException
    public static final String getCharset(int index) {
        try{
            return INDEX_TO_CHARSET[index];
        }catch (Exception e){

            e.printStackTrace();
            return null;
        }
    }

然后找到MySQLChannel中

  private MySQLChannel handshake() throws IOException {
        // 读取握手数据包
        BinaryPacket initPacket = new BinaryPacket();
        initPacket.read(in);
        HandshakePacket hsp = new HandshakePacket();
        hsp.read(initPacket);

        // 设置通道参数
        this.threadId = hsp.threadId;
        int ci = hsp.serverCharsetIndex & 0xff;
        LOGGER.error("ci有问题:==============" + ci + hsp.serverCharsetIndex);
        if ((charset = CharsetUtil.getCharset(ci)) != null) {
            this.charsetIndex = ci;
        } else {
            throw new UnknownCharsetException("charset:" + ci);
        }

这里在cobar运行后hsp.serverCharsetIndex=-64,所以后面就报异常了。
这样造成的结果是数据节点不能初始化,但是cobar能够启动,并且能访问到数据库,数据表就无法访问了

a problem about auto_increase

i have 1 logical table ,separate into 2 physical tables ,put them into 2 database .
then make the 2 database as 2 datanode into cobar.

the table have 1 column 'id' auto_increase.
use the rule :

2
512

when i insert 1 row into cobar without special id, cobar generate 2 row in 2 database

cobar-driver使用出问题!

Class.forName("com.alibaba.cobar.jdbc.Driver");
String url = "jdbc:cobar://host:8066/database";
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "654321");
Connection connection = null;
try {
connection = DriverManager.getConnection(url, info);
Statement stmt = (Statement) connection.createStatement();
String query = "SELECT COUNT(*) FROM table";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
System.out.println("总数:" + rs.getString(1));
}
rs.close();
stmt.close();
} finally {
if (connection != null) {
connection.close();
}
}
我把cobar-driver包导进去,用上面的代码提示下面的错误:
java.sql.SQLException: No suitable driver found for jdbc:cobar://xxxx:8066/database
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.demo.cobar.CobarTest.main(CobarTest.java:21)
这种情况如何结局啊?

cobar driver 连接出错

source

try {
Class.forName("com.alibaba.cobar.jdbc.Driver");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String url = "jdbc:cobar://127.0.0.1:8066/test";
Properties info = new Properties();
info.setProperty("user", "test");
info.setProperty("password", "test");
Connection con = null;
try {
con = DriverManager.getConnection(url, info);

Statement stmt = con.createStatement();

error:

java.sql.SQLException: java.net.SocketException: Connection reset
at com.alibaba.cobar.jdbc.UrlProvider.getUrl(UrlProvider.java:47)
at com.alibaba.cobar.jdbc.Driver.connect(Driver.java:65)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at com.fxi.test.main.MainTest.testDriver(MainTest.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at com.alibaba.cobar.jdbc.util.StreamUtil.read(StreamUtil.java:33)
at com.alibaba.cobar.jdbc.util.StreamUtil.readUB3(StreamUtil.java:60)
at com.alibaba.cobar.jdbc.packet.BinaryPacket.read(BinaryPacket.java:39)
at com.alibaba.cobar.jdbc.UrlConnection.connect(UrlConnection.java:97)
at com.alibaba.cobar.jdbc.UrlProvider.getUrl(UrlProvider.java:44)
... 27 more

1.2.7的server用maven编译后运行报错

编译环境jdk 1.8
maven 3.2.1
用mysql客户端连接报错,在consloe.log日志如下
Exception in thread "Processor1-E1" java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
at com.alibaba.cobar.server.session.BlockingSession.release(BlockingSession.java:166)
at com.alibaba.cobar.mysql.bio.executor.MultiNodeExecutor.handleSuccessEOF(MultiNodeExecutor.java:402)
at com.alibaba.cobar.mysql.bio.executor.MultiNodeExecutor.handleRowData(MultiNodeExecutor.java:351)
at com.alibaba.cobar.mysql.bio.executor.MultiNodeExecutor.execute0(MultiNodeExecutor.java:265)
at com.alibaba.cobar.mysql.bio.executor.MultiNodeExecutor.access$100(MultiNodeExecutor.java:58)
at com.alibaba.cobar.mysql.bio.executor.MultiNodeExecutor$3.run(MultiNodeExecutor.java:214)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
~

数据源的问题

我在定义datasources的时候在本机的时候用127.0.0.1:3306就行,但是如果使用ip地址192.168.1.55的时候,查看那个输入文件总是显示连接被拒绝(密码和用户都是对的,端口还是3306),两个多小时了,实在没办法了,这是什么情况??

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.