Sharding-JDBC:实现数据库的读写分离?
简介
轻量级Java框架,在Java的JDBC层提供额外服务,以jar包的形式提供服务(增强版数据库连接驱动)。
适用于基于JDBC的ORM框架、支持第三方数据库连接池、支持实现了JDBC规范的数据库。
读写分离:基于已配置好主从复制的多个数据库。
使用步骤
在springboot项目中使用。
一、导入依赖
<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.1.1</version> </dependency>
二、配置信息application.yml
配置运行bean定义覆盖,保证sharding-jdbc生成的datasource对象与其它框架不发生冲突。
配置多个数据源,指定主库、从库,指定从库的负载策略。
spring:
main:
#允许bean定义覆盖,后生成的bean会覆盖之前生成的bean
allow-bean-definition-overriding: true
shardingsphere:
datasource:
# 配置数据源名称
names:
master,slave
# 数据源配置(主)
master:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.169.12.134:3306/db_test?characterEncoding=utf-8
username: ****
password: ****
# 数据源配置(从)
slave:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.11.123:3306/db_test?characterEncoding=utf-8
username: ****
password: ****
masterslave:
# 从库负载均衡策略,轮询
load-balance-algorithm-type: round_robin
# 数据源名称
name: dataSource
# 指定主库数据源
master-data-source-name: master
# 指定从库数据源,多个逗号分隔
slave-data-source-names: slave
props:
# 开启SQL显示,默认false
sql:
show: true
结果
项目中增删改操作会操作指定的主库,查询操作会操作指定的从库。