为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:win10
【CPU】:I7-7700HQ
【问题描述】*:我通过你们官方文档配置mycat连接池demo,发现mycat服务无法启动,mycat 使用的是Mycat-server-1.6-RELEASE版本的
- schema.xml配置信息:
<?xml version=“1.0”?>
<!DOCTYPE mycat:schema SYSTEM “schema.dtd”>
<mycat:schema xmlns:mycat=“http://io.mycat/”>
<!-- 定义一个 MyCat 的模式,此处定义了一个逻辑数据库名称 PRODUCTION -->
<!-- “checkSQLschema”:描述的是当前的连接是否需要检测数据库的模式 -->
<!-- “sqlMaxLimit”:表示返回的最大的数据量的行数 -->
<!-- “dataNode=“dn1,dn2””:该操作使用的数据节点是 dn1 的逻辑名称,这里 dn1 dn2 分别对应刚刚数据库里的两个模式 -->
<!–rule=“mod-long” 这里指的是数据库分库分表的柜子,可以在 rule.xml 文件里配置规则,此处 mod-long 指的是,交替插入 dn1 dn2 等各个节点–>
<schema name=“PRODUCTION” checkSQLschema=“true” sqlMaxLimit=“100” >
<table name=“PRODUCT_CATEGORY” primaryKey=“id” autoIncrement=“true” dataNode=“dn1,dn2” rule=“mod-long”/>
</schema>
<!-- 定义个数据的操作节点,以后这个节点会进行一些库表分离使用 -->
<!-- “dataHost=“localhost1””:定义数据节点的逻辑名称 -->
<!-- “database=“mydb1””:定义数据节点要使用的数据库名称,针对达梦数据库来说,对应的是模式名。 -->
<dataNode name=“dn1” dataHost=“localhost1” database=“mydb1” />
<dataNode name=“dn2” dataHost=“localhost2” database=“mydb2” />
<!-- 定义数据节点,包括各种逻辑项的配置 -->
<dataHost name=“localhost1” maxCon=“1000” minCon=“10” balance=“0” writeType=“0” dbType=“oracle” dbDriver=“jdbc” switchType=“1” slaveThreshold=“100”>
<!-- 配置真实数据库与 MyCat 的心跳 -->
<heartbeat>select user()</heartbeat>
<!-- 配置真实的 MySQL 的连接信息 这里由于我们借用 Oracle 连接通道,通过达梦配置对 Oracle 数据库的兼容参数–>
<writeHost host=“hostM1” url=“jdbc:dm://192.168.30.123:5236?comOra=true” user=“MYDB1” password=“a123456789”></writeHost>
</dataHost>
<dataHost name=“localhost2” maxCon=“1000” minCon=“10” balance=“0” writeType=“0” dbType=“oracle” dbDriver=“jdbc” switchType=“1” slaveThreshold=“100”>
<!-- 配置真实 MySQL 与 MyCat 的心跳 -->
<heartbeat>select user()</heartbeat>
<!-- 配置真实的 MySQL 的连接信息 -->
<writeHost host=“hostM1” url=“jdbc:dm://192.168.30.123:5236?comOra=true” user=“MYDB2” password=“a123456789”></writeHost>
</dataHost>
</mycat:schema>
Caused by: io.mycat.config.util.ConfigException: Illegal table conf : table [ PRODUCT_CATEGORY ] rule function [ mod-long ] partition size : 3 > table datanode size : 2, please make sure table datanode size = function partition size
这个报错是因为demo里面只配置了两个数据库的节点,但是mycat默认的是三个节点的,需要修改config/rule.xml配置里面的
<function name=“mod-long” class=“io.mycat.route.function.PartitionByMod”>
<!-- how many data nodes -->
<property name=“count”>3</property>
</function>
把3改为2即可启动成功