需求说明:
需要将ecshop和zabbix两个数据库,都通过mycat显示出来,并且都有读写权限
1、修改server.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<property name="defaultSqlParser">druidparser</property>
</system>
<!--以下设置为应用访问帐号权限 -->
<user name="root">
<property name="password">123456</property>
<!-- 下面标签填写的内容需要和schema.xml配置文件内的一致这里的两个值,可用逗号分开,但是在schema.xml配置文件内,必须用两个schema标签来进行分开填写 -->
<property name="schemas">ecshop,zabbix</property>
</user>
</mycat:server>
2、修改schema.xml文件
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<!--这里的schema标签内的name名字需要和server.xml内的一致-->
<schema name="ecshop" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<schema name="zabbix" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2">
</schema>
<!--这里写两个dataNode,对应上述两个schema标签,database的值表示数据库的真实名称 -->
<dataNode name="dn1" dataHost="dthost" database="ecshop"/>
<dataNode name="dn2" dataHost="dthost" database="zabbix"/>
<dataHost name="dthost" maxCon="500" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user();</heartbeat>
<writeHost host="MGR-130-1" url="192.168.1.130:3306" user="mycat" password="123456">
<readHost host="MGR-140-2" url="192.168.1.140:3306" user="mycat" password="123456">
</readHost>
</writeHost>
</dataHost>
</mycat:schema>
实验错误总结:
1、之前参照网上很多资料,这里如果写多库显示的,直接写一个schema标签,在标签内的dataNode值内写两个,用逗号分开,
按照这种方式,配置完毕后,重启mycat报错,提示无法找到dataNode标签内值。
2、这种配置方式不是分库分表,只是单独的实现mycat中间件连接数据库显示的数据库
3、如果要实现真正意义上的分库分表,请参考如下连接:
https://www.cnblogs.com/kevingrace/p/9365840.html
https://www.cnblogs.com/joylee/p/7513038.html