1.1 需求把商品表分片存储到三个数据节点上。
1.2 安装环境分析
两台mysql数据库服务器:
Host1:192.168.25.134
Host2:192.168.25.166
host1环境
操作系统版本 : centos6.4
数据库版本 : mysql-5.6
mycat版本 :1.4 release
数据库名 : db1、db3
mysql节点2环境
操作系统版本 : centos6.4
数据库版本 : mysql-5.6
mycat版本 :1.4 release
数据库名 : db2
MyCat安装到节点1上(需要安装jdk)
1.1 配置schema.xml
1.1.1Schema.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
1.1.2Schema.xml配置
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<!--
schema name:逻辑数据库名
table name:逻辑表名
dataNode:数据节点(对应真实数据库)
dataHost:Mysql服务器
rule:切片规则
-->
<schema name="e3mall" checkSQLschema="false" sqlMaxLimit="100">
<!-- auto sharding by id (long) -->
<table name="tb_item" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
</schema>
<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>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.25.134:3306" user="root"
password="root">
<!-- 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="root">
<!-- can have multi read hosts -->
</writeHost>
</dataHost>
</mycat:schema>
2.1 配置server.xml
1.1.1Server.xml介绍
server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。
1.1.2Server.xml配置
<user name="test">
<property name="password">test</property>
<property name="schemas">e3mall</property>
<property name="readOnly">false</property>
</user>
3.1 配置rule.xml
rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标签。在具体使用过程中可以按照需求添加tableRule
和function。
此配置文件可以不用修改,使用默认即可。