为什么要用Mycat
- java与数据库紧耦合
- 高访问量高并发对数据库压力
- 读写请求数据不一致
Mycat的官网
读写分离
数据分片
多数据源整合
Mycat的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。
这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台使用Mycat还是MySQL。
安装,配置,启动
- 将下载好的mycat压缩包拷贝到 linux 中。
- 将解压后的mycat移动到
/usr/local
目录中。 - 将
/usr/local/mycat/conf
目录下 server.xml 中<user name="root" defaultAccount="true">
修改为<user name="mycat" defaultAccount="true">
。 - 并修改 schema.xml 将原来的文件内容修改为:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
<!-- auto sharding by id (long) -->
<!-- <table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />-->
<!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"/> -->
</schema>
<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"/> -->
<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">
<!-- 哨兵模式,隔一段时间ping一下各个服务,使用select user() -->
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="localhost:3306" user="root"
password="root">
<readHost host="hostS1" url="localhost:3307" user="root" password="root"></readHost>
</writeHost>
<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>
</mycat:schema>
测试是否能连接数据库mysql -uroot -proot -h 127.0.0.1 -P3306
注意这里是使用docker创建了两个不同端口的mysql数据库
- 启动
控制台启动:去mycat/bin目录下执行 ./mycat console
后台启动:去mycat/bin目录下执行 ./mycat start
报错解决
mycat启动报错
https://www.jianshu.com/p/f26f057b7318
Caused by: io.mycat.config.util.ConfigException: SelfCheck### schema scott refered by user mycat is not exist!
解决:将server.xml中的scott改为schema.xml中的name,TESTDB
登录
运维使用的窗口(后台管理窗口)端口号是:9066
开发使用的窗口(数据窗口)端口号是:8066
使用mysql -umycat -p123456 -h 127.0.0.1 -P 8066
登录
搭建读写分离
笔记链接:
https://pan.baidu.com/s/1uMZg-bsmIIEEOA6jmB2KwA 提取码:8e041