Mysql8实现读写分离
程序员文章站
2022-06-19 15:21:14
1、MySQL8读写分离 mycat不支持MySQL8的读写分离,但是MySQL官方提供了解决方案2、项目引入MySQL8.0 mysql mysql-connector-java 8.0.15 3、url驱动...
搭建MySQL主从复制点这里:https://blog.csdn.net/qq_41936090/article/details/112646348
1、MySQL8读写分离
mycat不支持MySQL8的读写分离,但是MySQL官方提供了解决方案
2、项目引入MySQL8.0
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
3、url驱动
url: jdbc:mysql:replication://IP地址1,IP地址2,...,IP地址N/test
url: jdbc:mysql:replication://192.168.0.109:3306,192.168.0.108:3306,192.168.0.110:3306/vue?setUncode=true&serverTimezone=Asia/Shanghai&characterEnocoding=utf-8
IP地址1:master节点 写 请求
后面的IP地址:都是从节点 负责 读
注意:只有事务为只读的查询走从节点数据库(@Transactional(readOnly = true))
4、测试
-
验证读是否走从节点 :
将两个从节点的数据改一下,不要和主节点数据库一致。然后执行查询,会发现,查询的数据都是从节点数据,说明读的确是走了从节点。 -
验证写是否走主节点:
进行数据的添加,然后再去各个节点对数据库进行查询,你会发现刚刚插入的数据,每一个节点的数据库都能查询到。
数据的添加原理:数据添加走的是主节点,然后从节点通过日志,从而同步主节点数据库。 -
后面遇到一个问题:执行查询的时候表名不存在,后来把查询语句的表名全部改为大小写即可。原理Linux系统中,Mysql默认区分大小写。
本文地址:https://blog.csdn.net/qq_41936090/article/details/112660835
上一篇: webpack打包优化解决方案
下一篇: vue如何解决axios请求前端跨域问题