rule function [ rang-long ] partition size : 3
👉 测试 MyCat 使用,配置如下
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="demo" checkSQLschema="true" sqlMaxLimit="100">
<table name="tb_student" dataNode="dn1" rule="auto-sharding-long" />
</schema>
<dataNode name="dn1" dataHost="dhost1" database="demo" />
<dataHost name="dhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="master" url="192.168.169.101:3306" user="root" password="Abcd@1234" />
</dataHost>
</mycat:schema>
描述:
这里只配置了一个节点测试
❓ 问题:
如上,在测试 MyCat 时配置一个节点,在启动时报错,提示节点数量不对
报错内容如下:
STATUS | wrapper | 2022/06/29 10:16:39 | --> Wrapper Started as Daemon
STATUS | wrapper | 2022/06/29 10:16:39 | Launching a JVM...
INFO | jvm 1 | 2022/06/29 10:16:40 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2022/06/29 10:16:40 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
INFO | jvm 1 | 2022/06/29 10:16:40 |
INFO | jvm 1 | 2022/06/29 10:16:41 |
INFO | jvm 1 | 2022/06/29 10:16:41 | WrapperSimpleApp: Encountered an error running main: java.lang.ExceptionInInitializerError
INFO | jvm 1 | 2022/06/29 10:16:41 | java.lang.ExceptionInInitializerError
INFO | jvm 1 | 2022/06/29 10:16:41 | at io.mycat.MycatStartup.main(MycatStartup.java:53)
INFO | jvm 1 | 2022/06/29 10:16:41 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
INFO | jvm 1 | 2022/06/29 10:16:41 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
INFO | jvm 1 | 2022/06/29 10:16:41 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
INFO | jvm 1 | 2022/06/29 10:16:41 | at java.lang.reflect.Method.invoke(Method.java:498)
INFO | jvm 1 | 2022/06/29 10:16:41 | at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
INFO | jvm 1 | 2022/06/29 10:16:41 | at java.lang.Thread.run(Thread.java:748)
INFO | jvm 1 | 2022/06/29 10:16:41 | Caused by: io.mycat.config.util.ConfigException: Illegal table conf : table [ TB_STUDENT ] rule function [ rang-long ] partition size : 3 > table datanode size : 1, please make sure table datanode size = function partition size
INFO | jvm 1 | 2022/06/29 10:16:41 | at io.mycat.config.loader.xml.XMLSchemaLoader.checkRuleSuitTable(XMLSchemaLoader.java:595)
INFO | jvm 1 | 2022/06/29 10:16:41 | at io.mycat.config.loader.xml.XMLSchemaLoader.loadTable(XMLSchemaLoader.java:422)
INFO | jvm 1 | 2022/06/29 10:16:41 | at io.mycat.config.loader.xml.XMLSchemaLoader.loadTables(XMLSchemaLoader.java:317)
INFO | jvm 1 | 2022/06/29 10:16:41 | at io.mycat.config.loader.xml.XMLSchemaLoader.loadSchemas(XMLSchemaLoader.java:169)
INFO | jvm 1 | 2022/06/29 10:16:41 | at io.mycat.config.loader.xml.XMLSchemaLoader.load(XMLSchemaLoader.java:117)
INFO | jvm 1 | 2022/06/29 10:16:41 | at io.mycat.config.loader.xml.XMLSchemaLoader.<init>(XMLSchemaLoader.java:78)
INFO | jvm 1 | 2022/06/29 10:16:41 | at io.mycat.config.loader.xml.XMLSchemaLoader.<init>(XMLSchemaLoader.java:82)
INFO | jvm 1 | 2022/06/29 10:16:41 | at io.mycat.config.ConfigInitializer.<init>(ConfigInitializer.java:76)
INFO | jvm 1 | 2022/06/29 10:16:41 | at io.mycat.config.MycatConfig.<init>(MycatConfig.java:72)
INFO | jvm 1 | 2022/06/29 10:16:41 | at io.mycat.MycatServer.<init>(MycatServer.java:180)
INFO | jvm 1 | 2022/06/29 10:16:41 | at io.mycat.MycatServer.<clinit>(MycatServer.java:121)
INFO | jvm 1 | 2022/06/29 10:16:41 | ... 7 more
STATUS | wrapper | 2022/06/29 10:16:43 | <-- Wrapper Stopped
👉 解决
在
autopartition-long.txt
文件中修改配置规则
下图中可以看到,默认情况下配置了三个节点
所以这里我们只需要删除两个即可