本文章主要对mycat的配置文件注释说明,详细的安装使用请戳这个地址:
mycat安装使用-https://blog.youkuaiyun.com/u013467442/article/details/56955846
- 代码中
- 连接mycat时,将原先连接mysql的端口和数据库改为mycat的端口8066,和mycat的逻辑数据库TESTDB,用户名和密码为server.xml表里设定的user。
jdbc.url=jdbc:mysql://127.0.0.1:8066/TESTDB?characterEncoding=utf-8
jdbc.driver=com.mysql.jdbc.Driver
jdbc.username=user
jdbc.password=user
- mycat配置文件
- server.xml:设置连接的用户,例如连接mysql数据库时所需的用户名、密码和连接哪个数据库;通过该xml可以配置连接用户的权限。在实验中,测试了user用户,由于设置了只读,所以在插入数据时抛了异常。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<property name="defaultSqlParser">druidparser</property>
<property name="mutiNodeLimitType">1</property>
<property name="serverPort">8066</property> #连接端口,替换连接mysql时的3306端口
<property name="managerPort">9066</property>
</system>
<!-- 任意设置登陆 mycat 的用户名,密码,数据库 -->
<user name="test">
<property name="password">test</property>
<property name="schemas">TESTDB</property> #该用户能够连接的逻辑数据库
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
<!--
<quarantine>
<whitehost>
<host host="127.0.0.1" user="mycat"/>
<host host="127.0.0.2" user="mycat"/>
</whitehost>
<blacklist check="false"></blacklist>
</quarantine>
-->
</mycat:server>
- schema.xml:设置TESTDB逻辑数据库对应哪些表,哪些表在哪些节点,节点的地址,
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 设置表的存储方式.schema name="TESTDB" 与 server.xml中的 TESTDB 设置一致 -->
<!-- 设置这个TESTDB逻辑数据库对应哪些表,item表的rule=role1是该表的分库规则,在rule.xml里设定了规则 -->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="users" primaryKey="id" dataNode="node_db01" />
<table name="item" primaryKey="id" dataNode="node_db02,node_db03" rule="role1" />
</schema>
<!-- 设置dataNode 对应的数据库,及 mycat 连接的地址dataHost -->
<dataNode name="node_db01" dataHost="dataHost01" database="db01" />
<dataNode name="node_db02" dataHost="dataHost01" database="db02" />
<dataNode name="node_db03" dataHost="dataHost01" database="db03" />
<!-- mycat 逻辑主机dataHost对应的物理主机.其中也设置对应的mysql登陆信息 -->
<dataHost name="dataHost01" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<writeHost host="server1" url="127.0.0.1:3306" user="root" password="root"/>
</dataHost>
</mycat:schema>
rule.xml:该路由表表明采用mod2的方式进行路由。通过下面可知是对item表的id键进行取模分表的,取模分到db02和db03,而users表直接路由到db01中。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
<tableRule name="role1"> #创建角色,用于给哪张表分配角色
<rule>
<columns>id</columns>#根据id进行分割
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
#分库规则,上面设定了id作为分割条件,条件为 id % 2
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<!-- how many data nodes -->
<property name="count">2</property>
</function>
</mycat:rule>