zoukankan      html  css  js  c++  java
  • mycat 新增分片和字符集

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

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

    MySQL ServerServer端字符集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)

  • 相关阅读:
    2019New XTOOL X100 PAD钥匙编程器:有啥好用的吗?
    AUTEL MaxiSys MS906BT常见问题解答:修改速度限制器,输入VIN号码
    Autel MaxiAP AP200:功能,特性,评论
    OBDSTAR X300 PRO3详细评论
    Autel MaxiIM IM608:关于如何更新和一些评论
    Autel MaxiAP AP200:功能,特性,评论,
    OBDSTAR X300 PRO3详细评论
    k8s 基础总结
    k8s yaml 编写
    k8s 生命周期概况
  • 原文地址:https://www.cnblogs.com/yhq1314/p/9968184.html
Copyright © 2011-2022 走看看