MySQL读写分离(二)—— jdbc驱动实现

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中间件去实现读写分离。

猜你喜欢

转载自www.cnblogs.com/ahhyong/p/10412681.html
今日推荐