1. 程式人生 > >MySQL讀寫分離(二)—— jdbc驅動實現

MySQL讀寫分離(二)—— jdbc驅動實現

conn read 8.4 url long nsa java com 簡單

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中間件去實現讀寫分離。

MySQL讀寫分離(二)—— jdbc驅動實現