一、Schema.xml介绍与配置
Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。
schema 标签用于定义MyCat实例中的逻辑库
Table 标签定义了MyCat中的逻辑表
dataNode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。
dataHost 标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。
注意:若是LINUX版本的MYSQL,则需要设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。
在MySQL的配置文件中 /etc/my.cnf 的[mysqld] 中增加一行
lower_case_table_names = 1
之后就不区分大小写了
配置【两个服务器节点,三个数据库结点】
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://org.opencloudb/"> <!--schema逻辑数据库名:e3mall-32--> <schema name="e3mall-32" checkSQLschema="false" sqlMaxLimit="100"> <!-- 配置数据库表为tb_item,dataNode:这个表要存到那几个数据节点上,rule:分片规则--> <table name="tb_item" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /> </schema> <!--dataNode:配置数据节点,dataHost:节点所在的服务器,这里有两个服务器--> <dataNode name="dn1" dataHost="localhost1" database="db1" /> <dataNode name="dn2" dataHost="localhost2" database="db2" /> <dataNode name="dn3" dataHost="localhost1" database="db3" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <!--心跳包,用来检查当前服务器的健康状态--> <heartbeat>select user()</heartbeat> <!-- 写那个数据库 --> <writeHost host="hostM1" url="192.168.25.134:3306" user="root" password="123456"> <!-- can have multi read hosts --> </writeHost> </dataHost> <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="192.168.25.166:3306" user="root" password="123456"> <!-- can have multi read hosts --> </writeHost> </dataHost> </mycat:schema>
二、server.xml的介绍与配置
server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。
<?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="user"> <property name="password">123456</property> <property name="schemas">e3mall-32</property> <!--因为可读可写,所以不需要下边一行--> <!--<property name="readOnly">true</property>--> </user> </mycat:server>