Mycat单库分表
一、准备工作
1.MySQL主从同步、JDK。
2.mycat解压即可,无需安装。
3.如果用的是云服务器,需要开放8066端口。
二、配置文件
1.server.xml:定义用户以及系统相关变量,如端口(默认8066,连接时用的也是这个端口)等。
只改了用户信息,
(1)这里的"root"是指连接mycat时使用的用户名,不是MySQL的用户名,可以改成其它的。
(2)"123456"是连接mycat所用的密码。
(3)MYCATTESTDB是在schema配置的库名,并不是MySQL中实际的表名。
例如我mysql中的库名是mytest,schema可以配置成MYCATTESTDB。
2.schema.xml:定义逻辑库、表、分片节点等内容。
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- name="MYCATTESTDB" 要和service定义保持一致-->
<schema name="MYCATTESTDB" checkSQLschema="true" sqlMaxLimit="100">
<!-- 要对t_user进行单库分表 根据分片规则插入到t_user1、t_user2、t_user3表中 -->
<table name="t_user" subTables="t_user$1-3" primaryKey="id" rule="rule4" dataNode="dn1" />
</schema>
<dataNode name="dn1" dataHost="localhost1" database="mydb01" /> <!-- database为同步数据库 主从需要保持一致 -->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="xxx:3306" user="root"
password="root"> <!-- 主库连接信息 -->
<readHost host="hostS2" url="xxx:3306" user="root" password="123456" /> <!-- 从库连接信息 -->
</writeHost>
</dataHost>
</mycat:schema>
3.rule.xml:定义分片规则。
三、启动命令
./mycat start #启动
./mycat start #停止
./mycat status #查看启动状态
四、实际项目配置
五、测试结果如下:
插入五条数据
三张表分别已存储数据(查看主库为例)
在我们开发中实际操作的是MYCAT中间件库,增删改同时也会同步到主库和从库。