前言
当我们的数据库的数据量增大一定程度后,会导致性能大幅度下降。通常可以采用MyCAT来实现数据库的分表分库,这篇来简单记录一下如何实现,后面再来分析MyCAT的源码。
MyCAT实践
运行环境:Windows + MyCAT1.6,两台MySQL服务,以及一台MyCAT服务器。
MySQL1 10.1.13.29
MySQL2 10.1.13.30
MyCAT 10.66.83.213
首先到官网下载MyCAT。在conf文件夹中有三个文件比较重要,分别为schema.xml
、server.xml
、rule.xml
。
server.xml 主要配置逻辑数据库的信息,包括用户名、密码、端口等,也是代码中数据库连接的地址。我们通过连接这个逻辑数据库,来操作物理数据库,这个逻辑数据库配置完毕可以直接在navicat看到:
1 | <?xml version="1.0" encoding="UTF-8"?> |
在这里我们配置了逻辑数据库的用户名为root,密码为123456,操作的数据库为TESTDB。
schema.xml 主要配置物理数据库的信息,逻辑数据库名称以及表和路由策略之间的关系等:
1 | <?xml version="1.0"?> |
rule.xml主要配置路由策略、拆分规则等,下面截取了mod-long的配置,常用的几种策略,可以点击这里查看:
1 | <?xml version="1.0" encoding="UTF-8"?> |
配置完毕,在bin下启动startup-nowrap.bat
:
使用Navicat查看具体的情况:
往29,30插入几条数据,然后通过连接MyCAT来查看是否成功:
1 | # -*- coding: utf-8 -*- |
可以看到的确查到了29,30的数据:
同样的往MyCAT插入数据,因为我们采用了mod-long的路由方法,所以会根据配置的字段进行取模运算,然后插入到具体的数据库中。