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自动实现MySQL读写分离

Sharding-Jdbc 实现读写分离 + 分库分表,写得太好了……

Sharding-Jdbc 实现读写分离 + 分库分表,写得太好了!

MySQL 数据库MySQL 主从复制和 Sharding-JDBC 实现读写分离

MySQL 数据库MySQL 主从复制和 Sharding-JDBC 实现读写分离