MySQL读写分离—— jdbc驱动实现
Posted ahhyong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中间件去实现读写分离。
以上是关于MySQL读写分离—— jdbc驱动实现的主要内容,如果未能解决你的问题,请参考以下文章
Sharding-Jdbc 实现读写分离 + 分库分表,写得太好了……
Sharding-Jdbc 实现读写分离 + 分库分表,写得太好了!