执行 select * from travelrecord ,分析Debug日志,说明整个执行逻辑,包括连接获取,连接同步信息,数据合并,数据返回,连接释放

新增一个分片表 T_VOTE (ID,PROVINCE),PROVINCE用hash分片 ,并用reload命令方式重载生效, 截图和文字说明整个过程。

MySQL Server里Server端字符集UTF8情况下,当客户端字符集配置为latin 与UTF8的情况下,,通过MySQL客户端登录Mycat,执行select操作,通过日志分析,看看MyCAT的执行过程有哪些差别。

1:

mysql> select * from travelrecord;

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:    6

Current database: TESTDB

+---------+---------+------------+------+------+

| id      | user_id | traveldate | fee  | days |

+---------+---------+------------+------+------+

|       1 | wang    | 2014-01-05 |  511 |    3 |

| 7000001 | wang    | 2014-01-05 |  511 |    3 |

+---------+---------+------------+------+------+

2 rows in set (0.26 sec)

[mysql@hongquan ~]$ mysql -usystem -pmysql -P9066 -h10.0.1.134  -DTESTDB

mysql> show @@cache;

+-------------------------------------+-------+------+--------+------+------+---------------+---------------+

| CACHE                               | MAX   | CUR  | ACCESS | HIT  | PUT  | LAST_ACCESS   | LAST_PUT      |

+-------------------------------------+-------+------+--------+------+------+---------------+---------------+

| ER_SQL2PARENTID                     |  1000 |    0 |      0 |    0 |    0 |             0 |             0 |

| SQLRouteCache                       | 10000 |    1 |      7 |    0 |    2 | 1478596909351 | 1478596909353 |

| TableID2DataNodeCache.TESTDB_ORDERS | 50000 |    0 |      0 |    0 |    0 |             0 |             0 |

+-------------------------------------+-------+------+--------+------+------+---------------+---------------+

执行查询

mysql> select * from company;

mysql> select * from travelrecord;

mysql> show @@cache;

+-------------------------------------+-------+------+--------+------+------+---------------+---------------+

| CACHE                               | MAX   | CUR  | ACCESS | HIT  | PUT  | LAST_ACCESS   | LAST_PUT      |

+-------------------------------------+-------+------+--------+------+------+---------------+---------------+

| ER_SQL2PARENTID                     |  1000 |    0 |      0 |    0 |    0 |             0 |             0 |

| SQLRouteCache                       | 10000 |    1 |     12 |    3 |    2 | 1478596994245 | 1478596909353 |

| TableID2DataNodeCache.TESTDB_ORDERS | 50000 |    0 |      0 |    0 |    0 |             0 |             0 |

debug 日志

2016-11-08 00:33:29.115  INFO [$_NIOREACTOR-0-RW] (io.mycat.net.handler.FrontendAuthenticator.success(FrontendAuthenticator.java:194)) - ServerConnection [id=6, schema=TESTDB, host=10.0.1.134, user=system,txIsolation=3, autocommit=true, schema=TESTDB]'system' login success

2016-11-08 00:33:29.121 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.net.FrontendConnection.query(FrontendConnection.java:288)) - ServerConnection [id=6, schema=TESTDB, host=10.0.1.134, user=system,txIsolation=3, autocommit=true, schema=TESTDB] show databases

2016-11-08 00:33:29.122 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.server.ServerQueryHandler.query(ServerQueryHandler.java:57)) - ServerConnection [id=6, schema=TESTDB, host=10.0.1.134, user=system,txIsolation=3, autocommit=true, schema=TESTDB]show databases

2016-11-08 00:33:29.127 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.net.FrontendConnection.query(FrontendConnection.java:288)) - ServerConnection [id=6, schema=TESTDB, host=10.0.1.134, user=system,txIsolation=3, autocommit=true, schema=TESTDB] show tables

2016-11-08 00:33:29.127 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.server.ServerQueryHandler.query(ServerQueryHandler.java:57)) - ServerConnection [id=6, schema=TESTDB, host=10.0.1.134, user=system,txIsolation=3, autocommit=true, schema=TESTDB]show tables

2016-11-08 00:33:29.130 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.net.FrontendConnection.query(FrontendConnection.java:288)) - ServerConnection [id=6, schema=TESTDB, host=10.0.1.134, user=system,txIsolation=3, autocommit=true, schema=TESTDB] select * from travelrecord

2016-11-08 00:33:29.130 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.server.ServerQueryHandler.query(ServerQueryHandler.java:57)) - ServerConnection [id=6, schema=TESTDB, host=10.0.1.134, user=system,txIsolation=3, autocommit=true, schema=TESTDB]select * from travelrecord

2016-11-08 00:33:29.130 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.cache.impl.EnchachePool.get(EnchachePool.java:77)) - SQLRouteCache  miss cache ,key:TESTDBselect * from travelrecord

2016-11-08 00:33:29.188 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.cache.impl.EnchachePool.putIfAbsent(EnchachePool.java:60)) - SQLRouteCache add cache ,key:TESTDBselect * from travelrecord value:select * from travelrecord, route={

1 -> dn1{SELECT *

FROM travelrecord

LIMIT 100}

2 -> dn2{SELECT *

FROM travelrecord

LIMIT 100}

3 -> dn3{SELECT *

FROM travelrecord

LIMIT 100}

}

2016-11-08 00:33:29.189 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.server.NonBlockingSession.execute(NonBlockingSession.java:119)) - ServerConnection [id=6, schema=TESTDB, host=10.0.1.134, user=system,txIsolation=3, autocommit=true, schema=TESTDB]select * from travelrecord, route={

1 -> dn1{SELECT *

FROM travelrecord

LIMIT 100}

2 -> dn2{SELECT *

FROM travelrecord

LIMIT 100}

3 -> dn3{SELECT *

FROM travelrecord

LIMIT 100}

} rrs

2016-11-08 00:33:29.235 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.<init>(MultiNodeQueryHandler.java:101)) - execute mutinode query select * from travelrecord

2016-11-08 00:33:29.242 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.<init>(MultiNodeQueryHandler.java:137)) - has data merge logic

2016-11-08 00:33:29.242 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.execute(MultiNodeQueryHandler.java:170)) - rrs.getRunOnSlave()-null

2016-11-08 00:33:29.242 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.execute(MultiNodeQueryHandler.java:185)) - node.getRunOnSlave()1-null

2016-11-08 00:33:29.242 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.execute(MultiNodeQueryHandler.java:187)) - node.getRunOnSlave()2-null

2016-11-08 00:33:29.243 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDBNode.getConnection(PhysicalDBNode.java:96)) - rrs.getRunOnSlave() null

2016-11-08 00:33:29.243 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDBNode.getConnection(PhysicalDBNode.java:127)) - rrs.getRunOnSlave() null

2016-11-08 00:33:29.243 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDBPool.getRWBanlanceCon(PhysicalDBPool.java:456)) - select read source hostS1 for dataHost:localhost0

2016-11-08 00:33:29.244 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.MySQLConnection.synAndDoExecute(MySQLConnection.java:448)) - con need syn ,total syn cmd 1 commands schema change:true con:MySQLConnection [id=117, lastTime=1478594009244, user=system, schema=db1, old shema=db3, borrowed=true, fromSlaveDB=true, threadId=267, charset=utf8, txIsolation=3, autocommit=true, attachment=dn1{SELECT *

FROM travelrecord

LIMIT 100}, respHandler=io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler@64d72a05, host=192.168.3.110, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]

2016-11-08 00:33:29.245 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.execute(MultiNodeQueryHandler.java:185)) - node.getRunOnSlave()1-null

2016-11-08 00:33:29.245 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.execute(MultiNodeQueryHandler.java:187)) - node.getRunOnSlave()2-null

2016-11-08 00:33:29.246 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDBNode.getConnection(PhysicalDBNode.java:96)) - rrs.getRunOnSlave() null

2016-11-08 00:33:29.246 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDBNode.getConnection(PhysicalDBNode.java:127)) - rrs.getRunOnSlave() null

2016-11-08 00:33:29.246 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDBPool.getRWBanlanceCon(PhysicalDBPool.java:456)) - select read source hostS1 for dataHost:localhost0

2016-11-08 00:33:29.247 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.execute(MultiNodeQueryHandler.java:185)) - node.getRunOnSlave()1-null

2016-11-08 00:33:29.247 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.execute(MultiNodeQueryHandler.java:187)) - node.getRunOnSlave()2-null

2016-11-08 00:33:29.247 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDBNode.getConnection(PhysicalDBNode.java:96)) - rrs.getRunOnSlave() null

2016-11-08 00:33:29.247 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDBNode.getConnection(PhysicalDBNode.java:127)) - rrs.getRunOnSlave() null

2016-11-08 00:33:29.247 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDBPool.getRWBanlanceCon(PhysicalDBPool.java:456)) - select read source hostS1 for dataHost:localhost0

2016-11-08 00:33:29.249 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.okResponse(MultiNodeQueryHandler.java:236)) - received ok response ,executeResponse:false from MySQLConnection [id=117, lastTime=1478594009234, user=system, schema=db1, old shema=db1, borrowed=true, fromSlaveDB=true, threadId=267, charset=utf8, txIsolation=3, autocommit=true, attachment=dn1{SELECT *

FROM travelrecord

LIMIT 100}, respHandler=io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler@64d72a05, host=192.168.3.110, port=3306, statusSync=io.mycat.backend.mysql.nio.MySQLConnection$StatusSync@39b66fca, writeQueue=0, modifiedSQLExecuted=false]

2016-11-08 00:33:29.349 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.rowEofResponse(MultiNodeQueryHandler.java:316)) - on row end reseponse MySQLConnection [id=117, lastTime=1478594009234, user=system, schema=db1, old shema=db1, borrowed=true, fromSlaveDB=true, threadId=267, charset=utf8, txIsolation=3, autocommit=true, attachment=dn1{SELECT *

FROM travelrecord

LIMIT 100}, respHandler=io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler@64d72a05, host=192.168.3.110, port=3306, statusSync=io.mycat.backend.mysql.nio.MySQLConnection$StatusSync@39b66fca, writeQueue=0, modifiedSQLExecuted=false]

2016-11-08 00:33:29.349 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.server.NonBlockingSession.releaseConnection(NonBlockingSession.java:354)) - release connection MySQLConnection [id=117, lastTime=1478594009234, user=system, schema=db1, old shema=db1, borrowed=true, fromSlaveDB=true, threadId=267, charset=utf8, txIsolation=3, autocommit=true, attachment=dn1{SELECT *

FROM travelrecord

LIMIT 100}, respHandler=io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler@64d72a05, host=192.168.3.110, port=3306, statusSync=io.mycat.backend.mysql.nio.MySQLConnection$StatusSync@39b66fca, writeQueue=0, modifiedSQLExecuted=false]

2016-11-08 00:33:29.350 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDatasource.releaseChannel(PhysicalDatasource.java:442)) - release channel MySQLConnection [id=117, lastTime=1478594009234, user=system, schema=db1, old shema=db1, borrowed=true, fromSlaveDB=true, threadId=267, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=192.168.3.110, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]

2016-11-08 00:33:29.350 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.rowEofResponse(MultiNodeQueryHandler.java:316)) - on row end reseponse MySQLConnection [id=19, lastTime=1478594009234, user=system, schema=db2, old shema=db2, borrowed=true, fromSlaveDB=true, threadId=229, charset=utf8, txIsolation=3, autocommit=true, attachment=dn2{SELECT *

FROM travelrecord

LIMIT 100}, respHandler=io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler@64d72a05, host=192.168.3.110, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]

2016-11-08 00:33:29.350 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.server.NonBlockingSession.releaseConnection(NonBlockingSession.java:354)) - release connection MySQLConnection [id=19, lastTime=1478594009234, user=system, schema=db2, old shema=db2, borrowed=true, fromSlaveDB=true, threadId=229, charset=utf8, txIsolation=3, autocommit=true, attachment=dn2{SELECT *

FROM travelrecord

LIMIT 100}, respHandler=io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler@64d72a05, host=192.168.3.110, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]

2016-11-08 00:33:29.350 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDatasource.releaseChannel(PhysicalDatasource.java:442)) - release channel MySQLConnection [id=19, lastTime=1478594009234, user=system, schema=db2, old shema=db2, borrowed=true, fromSlaveDB=true, threadId=229, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=192.168.3.110, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]

2016-11-08 00:33:29.350 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.rowEofResponse(MultiNodeQueryHandler.java:316)) - on row end reseponse MySQLConnection [id=87, lastTime=1478594009234, user=system, schema=db3, old shema=db3, borrowed=true, fromSlaveDB=true, threadId=257, charset=utf8, txIsolation=3, autocommit=true, attachment=dn3{SELECT *

FROM travelrecord

LIMIT 100}, respHandler=io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler@64d72a05, host=192.168.3.110, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]

2016-11-08 00:33:29.350 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.server.NonBlockingSession.releaseConnection(NonBlockingSession.java:354)) - release connection MySQLConnection [id=87, lastTime=1478594009234, user=system, schema=db3, old shema=db3, borrowed=true, fromSlaveDB=true, threadId=257, charset=utf8, txIsolation=3, autocommit=true, attachment=dn3{SELECT *

FROM travelrecord

LIMIT 100}, respHandler=io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler@64d72a05, host=192.168.3.110, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]

2016-11-08 00:33:29.350 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDatasource.releaseChannel(PhysicalDatasource.java:442)) - release channel MySQLConnection [id=87, lastTime=1478594009234, user=system, schema=db3, old shema=db3, borrowed=true, fromSlaveDB=true, threadId=257, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=192.168.3.110, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]

2016-11-08 00:33:29.352 DEBUG [BusinessExecutor0] (io.mycat.memory.unsafe.utils.sort.UnsafeExternalRowSorter.cleanupResources(UnsafeExternalRowSorter.java:109)) - row sorter clean up resources!!!

2016-11-08 00:33:29.370 DEBUG [BusinessExecutor0] (io.mycat.memory.unsafe.memory.mm.DataNodeMemoryManager.releaseExecutionMemory(DataNodeMemoryManager.java:184)) - Thread25 release 1024.0 KB from io.mycat.memory.unsafe.utils.sort.UnsafeExternalSorter@6ec1c256

2016-11-08 00:33:29.370 DEBUG [BusinessExecutor0] (io.mycat.memory.unsafe.memory.mm.DataNodeMemoryManager.releaseExecutionMemory(DataNodeMemoryManager.java:184)) - Thread25 release 128.0 KB from io.mycat.memory.unsafe.utils.sort.UnsafeExternalSorter@6ec1c256

2016-11-08 00:33:29.370 DEBUG [BusinessExecutor0] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.outputMergeResult(MultiNodeQueryHandler.java:441)) - last packet id:10

2016-11-08 00:33:29.370 DEBUG [BusinessExecutor0] (io.mycat.memory.unsafe.utils.sort.UnsafeExternalRowSorter.cleanupResources(UnsafeExternalRowSorter.java:109)) - row sorter clean up resources!!!

分析:

SQLRouteCache  miss cache ,key:TESTDBselect * from travelrecord

从路由缓存中查询,发现没有

2016-11-08 00:33:29.188 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.cache.impl.EnchachePool.putIfAbsent(EnchachePool.java:60)) - SQLRouteCache add cache ,key:TESTDBselect * from travelrecord value:select * from travelrecord, route={

1 -> dn1{SELECT *

FROM travelrecord

LIMIT 100}

2 -> dn2{SELECT *

FROM travelrecord

LIMIT 100}

3 -> dn3{SELECT *

FROM travelrecord

LIMIT 100}

}

putIfAbsent ,将查询路由put到路由缓存中

2016-11-08 00:33:29.189 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.server.NonBlockingSession.execute(NonBlockingSession.java:119)) - ServerConnection [id=6, schema=TESTDB, host=10.0.1.134, user=system,txIsolation=3, autocommit=true, schema=TESTDB]select * from travelrecord, route={

1 -> dn1{SELECT *

FROM travelrecord

LIMIT 100}

2 -> dn2{SELECT *

FROM travelrecord

LIMIT 100}

3 -> dn3{SELECT *

FROM travelrecord

LIMIT 100}

} rrs

2016-11-08 00:33:29.235 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.<init>(MultiNodeQueryHandler.java:101)) - execute mutinode query select * from travelrecord

sql的执行路由计划,可以看到sql具体被分配到那个分片执行

2016-11-08 00:33:29.242 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.<init>(MultiNodeQueryHandler.java:137)) - has data merge logic

2016-11-08 00:33:29.242 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.execute(MultiNodeQueryHandler.java:170)) - rrs.getRunOnSlave()-null

2016-11-08 00:33:29.242 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.execute(MultiNodeQueryHandler.java:185)) - node.getRunOnSlave()1-null

2016-11-08 00:33:29.242 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler.execute(MultiNodeQueryHandler.java:187)) - node.getRunOnSlave()2-null

MultiNodeQueryHandler.java ,put缓存池

2016-11-08 00:33:29.243 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDBPool.getRWBanlanceCon(PhysicalDBPool.java:456)) - select read source hostS1 for dataHost:localhost0

从只读datahost hostS1上读取

, respHandler=io.mycat.backend.mysql.nio.handler.MultiNodeQueryHandler@64d72a05, host=192.168.3.110, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]

readhost配置,host=192.168.3.110

2016-11-08 00:33:29.350 DEBUG [$_NIOREACTOR-0-RW] (io.mycat.backend.datasource.PhysicalDatasource.releaseChannel(PhysicalDatasource.java:442)) - release channel MySQLConnection [id=87, lastTime=1478594009234, user=system, schema=db3, old shema=db3, borrowed=true, fromSlaveDB=true, threadId=257, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=192.168.3.110, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]

释放连接

2:

T_VOTE (ID,PROVINCE),PROVINCE

[mycat@hongquan conf]$ vim rule.xml

<tableRule name="sharding-by-intfile-testhq">

<rule>

<columns>PROVINCE</columns>

<algorithm>hash-int-testhq</algorithm>

</rule>

</tableRul>

<function name="hash-int-testhq"

class="org.opencloudb.route.function.PartitionByFileMap">

<property name="mapFile">partition-hash-int-testhq.txt</property>

<property name="type">1</property>

<property name="defaultNode">0</property>

</function>

[mycat@hongquan conf]$ touch partition-hash-int-testhq.txt

[mycat@hongquan conf]$ vim partition-hash-int-testhq.txt

sichuan=0

guangdong=1

hunan=2

DEFAULT_NODE=0

[mycat@hongquan conf]$ chmod 777 partition-hash-int-testhq.txt

[mycat@hongquan conf]$ vim schema.xml

<table name="T_VOTE" dataNode="dn2,dn1,dn3" rule="sharding-by-intfile-testhq" />

mysql> explain create table T_VOTE (ID int not null primary key,PROVINCE varchar(100) not null);

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id:    13

Current database: TESTDB

ERROR 1064 (HY000): op table not in schema----T_VOTE

mysql> reload @@config;

ERROR 1003 (HY000): Reload config failure

--查看错误日志

INFO   | jvm 1    | 2016/11/09 00:33:38 | Caused by: io.mycat.config.util.ConfigException: org.xml.sax.SAXParseException; lineNumber: 38; columnNumber: 11; The element type "tableRule" must be terminated by the matching end-tag "</tableRule>".

INFO   | jvm 1    | 2016/11/09 00:33:38 | Caused by: org.xml.sax.SAXParseException; lineNumber: 38; columnNumber: 11; The element type "tableRule" must be terminated by the matching end-tag "</tableRule>".

</tableRul>  ----> </tableRule>  --修改

INFO   | jvm 1    | 2016/11/09 00:35:47 | WrapperSimpleApp: Encountered an error running main: java.lang.ExceptionInInitializerError

INFO   | jvm 1    | 2016/11/09 00:35:47 | Caused by: io.mycat.config.util.ConfigException: java.lang.ClassNotFoundException: org.opencloudb.route.function.PartitionByFileMap

INFO   | jvm 1    | 2016/11/09 00:35:47 | Caused by: java.lang.ClassNotFoundException: org.opencloudb.route.function.PartitionByFileMap

class="org.opencloudb.route.function.PartitionByFileMap"> -->io.mycat.route.function.PartitionByFileMap  ---修改

--启动正常

mysql> explain create table T_VOTE (ID int not null primary key,PROVINCE varchar(100) not null);

+-----------+----------------------------------------------------------------------------------+

| DATA_NODE | SQL                                                                              |

+-----------+----------------------------------------------------------------------------------+

| dn2       | create table T_VOTE (ID int not null primary key,PROVINCE varchar(100) not null) |

| dn1       | create table T_VOTE (ID int not null primary key,PROVINCE varchar(100) not null) |

| dn3       | create table T_VOTE (ID int not null primary key,PROVINCE varchar(100) not null) |

+-----------+----------------------------------------------------------------------------------+

3 rows in set (0.03 sec)

mysql> create table T_VOTE (ID int not null primary key,PROVINCE varchar(100) not null);

Query OK, 0 rows affected (0.86 sec)

--database()

insert into T_VOTE(ID,PROVINCE) values(1,'sichuan');

insert into T_VOTE(ID,PROVINCE) values(2,'guangdong');

insert into T_VOTE(ID,PROVINCE) values(3,'hunan');

select * from T_VOTE;

mysql> explain select * from T_VOTE;

+-----------+--------------------------------+

| DATA_NODE | SQL                            |

+-----------+--------------------------------+

| dn1       | SELECT * FROM T_VOTE LIMIT 100 |

| dn2       | SELECT * FROM T_VOTE LIMIT 100 |

| dn3       | SELECT * FROM T_VOTE LIMIT 100 |

+-----------+--------------------------------+

3 rows in set (0.01 sec)

mysql> select * from T_VOTE;

+----+-----------+

| ID | PROVINCE  |

+----+-----------+

|  2 | guangdong |

|  1 | sichuan   |

|  3 | hunan     |

+----+-----------+

3 rows in set (0.15 sec)

mycat 新增分片和字符集的更多相关文章

  1. MyCat 枚举分片设计思考,查询命中条件

    Mycat多租户实现的两种方式 MyCat,各种分片规则,仅保证插入的时候分片.表关联,join,查询怎么命中分片条件,还是需要设计. 今天稍微测了一下. ER 分片,此方式,插入的时候能分片,但是查 ...

  2. Mysql系列六:(Mycat分片路由原理、Mycat常用分片规则及对应源码介绍)

    一.Mycat分片路由原理 我们先来看下面的一个SQL在Mycat里面是如何执行的: , ); 有3个分片dn1,dn2,dn3, id=5000001这条数据在dn2上,id=10000001这条数 ...

  3. JAVAEE——宜立方商城13:Mycat数据库分片、主从复制、读写分离、100%Linux中成功安装Mysql的方法

    1 海量数据的存储问题 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL ...

  4. JAVAEE——宜立方商城13:订单系统实现、订单生成、Mycat数据库分片

    1. 学习计划 1.订单系统实现 2.订单生成 3.Mycat数据库分片 2. 订单系统 2.1. 功能分析 1.在购物车页面点击“去结算”按钮,跳转到订单确认页面 a) 必须要求用户登录 b) 使用 ...

  5. Mycat 月分片方法

    概述 本篇文章主要介绍Mycat以月进行分片的方法,包括配置方法.注意事项等. mycat版本:1.4 数据节点:dn1,dn2,dn3 架构:主从 配置  创建测试表 CREATE TABLE `t ...

  6. MyCAT ER分片的验证

    在这里,构造了两张表,熟悉Oracle的童鞋都知道,dept(部门表)和emp(员工表),其中dept中的deptno是emp表中dept_no的外键. 两表的建表语句如下: create table ...

  7. MyCAT常用分片规则之分片枚举

    MyCAT支持多种分片规则,下面测试的这种是分片枚举.适用场景,列值的个数是固定的,譬如省份,月份等. 在这里,需定义三个值,规则均是在rule.xml中定义. 1. tableRule 2. fun ...

  8. Mycat跨分片Join

    1 前言 Mycat目前版本支持跨分片的join,主要实现的方式有四种. 全局表 ER分片 HBT(参考MyCAT人工智能解决跨分片SQL.docx) ShareJoin ShareJoin在开发版中 ...

  9. MyCat的分片规则

    1. 枚举法: 通过在配置文件中配置可能的枚举id,自己配置分片,使用规则: <tableRule name="sharding-by-intfile"> <ru ...

随机推荐

  1. HTML图片热区 map area 标签

    实例 <img src ="planets.gif" alt="Planets" usemap ="#planetmap" /> ...

  2. Nginad Server安装

    前言 Nginad是一个基于php的开源项目,它既可以作为静态配置的Ad Server,也可以作为动态的RTB Exchange使用.代码结构比较直接明了,挺适合用作学习的.本文如果有理解错误的地方, ...

  3. IOS 发布被拒 PLA 1.2问题 整个过程介绍 01

    公司前端时间发布IOS APP ,但是遇到一些很麻烦的问题,就是一个让人摸不着头脑的问题. 问题: The Seller and Artist names associated with your a ...

  4. Javascript中的prototype和__proto__的联系区别

    转载至http://www.cnblogs.com/sinstone/p/5136871.html   一.联系 prototype和__proto__都指向原型对象,任意一个函数(包括构造函数)都有 ...

  5. 2017-03-01 Oracle10g的安装与配置使用

    今天项目中又用到了Oracle,时隔三年没有碰过Oracle,之前在做某城市公共自行车管理系统时使用的是Orace10g版本,Oracle给我最大的感觉就是安装上以后,电脑就会变得很卡,所以大家当不使 ...

  6. hdu 2509 Be the Winner(anti nim)

    Be the Winner Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  7. hdu 3401 单调队列优化+dp

    http://acm.hdu.edu.cn/showproblem.php?pid=3401 Trade Time Limit: 2000/1000 MS (Java/Others)    Memor ...

  8. cassandra cqlsh 和 python客户端

    Keyspaces A cluster is a container for keyspaces. A keyspace is the outermost container for data in ...

  9. CentOS学习笔记(一):中文语言包及输入法的安装使用

    1.中文语言包安装 命令行执行: yum install fonts-chineseyum install fonts-ISO8859-2 2.切换成中文语言 菜单->System->Ad ...

  10. centos下环境变量配置

    export JAVA_HOME=/usr/local/jdk1.7.0_80export JRE_HOME=/usr/local/jdk1.7.0_80/jreexport CLASSPATH=.: ...