概念
mycat是连接应用软件和数据库的数据库中间件
要解决问题
- java程序与数据库解耦(多数据库在mycat进行配置)
- 高访问量高并发对数据库压力
- 读写请求数据量不一致(读写分离)
作用
- 读写分离(mycat集群)
- 数据分片(垂直和水平来拆分数据库或表)
- 多数据源整合
原理
mycat的原理是拦截,它拦截用户发过来的sql,做了如下分析,然后发往后端真实的数据库
- 分片分析
- 路由分析
- 读写分离分析
- 缓存分析
安装启动
下载地址:https://pan.baidu.com/s/1slb9mix
三个配置文件:
schema.xml:定义逻辑库、表、分片节点等内容
修改點:
- 修改dn1的数据库名为testdb,请提前准备好数据库
- 修改自己的数据库的ip和密码
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="host1" database="testdb" />
<dataHost name="host1" 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="106.55.146.154:3306" user="root"
password="xxxx">
<!-- can have multi read hosts -->
<readHost host="hostS1" url="39.106.142.155:3306" user="root" password="xxxx" />
</writeHost>
</dataHost>
</mycat:schema>
rule.xml:订阅分片规则
server.xml:用户定义或系统变量,如端口,如下将root用户改为:mycat,密码:123456
登录
mysql -umycat -p123456 -P 8066 -h 106.55.146.154
注意:如果使用云服务器,则在安全组打开8066的端口