修改 schema 配置文件
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1" dataNode="dn1">
<table name="customer" dataNode="dn2" ></table>
</schema>
<dataNode name="dn1" dataHost="host1" database="orders" />
<dataNode name="dn2" dataHost="host2" database="orders" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="jdbc:mysql://127.0.0.1:3306" user="root"
password="123456">
</writeHost>
</dataHost>
<dataHost name="host2" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM2" url="jdbc:mysql://127.0.0.2:3306" user="root"
password="123456">
</writeHost>
</dataHost>
</mycat:schema>
如果通过方式二去创建表,只有创建表明为:customer的时候,Mycat会自动帮你把表创建到对应的dn2的Host2主机配置的Mysql服务,创建其他的任意表,都将默认创建到dn1对应的Host1主机配置的Mysql服务
开发者只需要通过操作Mycat服务去操作数据,不需要关心数据在哪个服务器哪个库中,比如你的后端你是Java,只需要将配置数据库的地方改为mycat的服务即可,CRUD和正常操作Mysql一样即可 比如
jdbc:mysql://127.0.0.1:8066/TESTDB...后面省略
如果使用Mycat1.x版本进行分库操作,需要注意跨库目前不支持JOIN操作,分表不分库Mycat1.6.7.6亲测默认支持JOIN操作,无须配置ER表关系