mysql-connector-java驱动本身也提供了读写分离的功能,使用起来也非常简单。
网上很多文章会提到
com.mysql.jdbc.ReplicationDriver
这个类,其实这个类在稍高的mysql-connector-java版本中已经被移除了,直接使用com.mysql.cj.jdbc.Driver
即可。
首先,看配置:
spring:
datasource:
url: jdbc:mysql:replication://192.168.41.130:3306,192.168.41.130:3307/test?useUnicode=true&characterEncoding=utf-8
username: root
password: mysql
driver-class-name: com.mysql.cj.jdbc.Driver
url的第一个mysql是作为master库,后面的所有mysql都是slave库。
① 在代码中,如果需要走slave库,那么只需要指定为只读事务,加上@Transactional(readOnly = true)
注解即可,例如:
@Override
@Transactional(readOnly = true)
public UserEntity findById(Long id) {
return userDao.findById(id);
}
② 如果加了@Transactional
或者没有事务的方法,那么都是走msater库。
这是一种比较简单的读写分离方案,另外,还可以通过mysql-router中间件去实现读写分离。
原文地址:https://www.cnblogs.com/ahhyong/p/10412681.html
时间: 2024-11-09 02:07:38