MySQL讀寫分離(二)—— jdbc驅動實現
阿新 • • 發佈:2019-02-21
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驅動實現