mycat 新增分片和字符集
执行 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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构