目录
- 八、数据库中间件MyCat实现读写分离
- 1、克隆:
- 2、配置分析:
- 1、schema.xml
- 2、启动mycat:
- 3、关闭防火墙:
- 4、代码测试:
- 测试写入:
- 测试读:
- 强制读Master
八、数据库中间件MyCat实现读写分离
作用:进行读写分离
mycat是单独部署在一台服务器的
分析图:
1、克隆:
拷贝一个虚拟机栈作为mycat的服务器,ip为:192.168.209.153
查看 java -version ,看jdk是否安装好
上传这个
将mycat解压到指定目录下面
查看
2、配置分析:
schema.xml 等文件里面的属性都可以在这个官网查看,不懂的直接官网查就可以
mycat1的官网:https://www.yuque.com/ccazhw/tuacvk/gmbnwu
1、schema.xml
解释分析:
去掉注释:
把原本的配置文件给删除,把改好的这些复制进去
删除配置文件所有数据命令: :0, d 表示删除 0 到最后一行, d 表示删除0到最后一行, d表示删除0到最后一行,表示最后一行,d表示删除
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="t_order" dataNode="dn01"/>
</schema>
<dataNode name="dn01" dataHost="dn01" database="ljh_test" />
<dataHost name="dn01" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="192.168.209.150" url="192.168.209.150:3306" user="root" password="123456">
<readHost host="192.168.209.152" url="192.168.209.152:3306" user="root" password="123456" />
</writeHost>
<writeHost host="192.168.209.152" url="192.168.209.152:3316" user="root" password="123456" />
</dataHost>
</mycat:schema>
拷贝老是不完整,开头的用手进行输入。
2、启动mycat:
启动mycat: /usr/local/mycat/bin/mycat start
查看mycat日志: tail -f -n 50 /usr/local/mycat/logs/wrapper.log
3、关闭防火墙:
4、代码测试:
测试写入:
写一个MyCatUtil的类
通过这个配置可以看出写入的主数据库是150服务器的数据库
成功往主数据库插入数据,从数据库也正常同步数据
测试读:
读数据的话应该是从 从数据库 读取数据
测试成功
强制读Master
如果我们想读主数据库的数据,应该这么操作
可以使用注解强制读操作走主库
/*#mycat:db_type=master*/ + 真实SQL
mycat在解析sql的时候发现该注解,就会去强制读主数据库
用注解强制读主库成功,这个注解就是长这个样子的,属于mycat的注解类型。