参考
配置参考官网:
http://shardingsphere.io/document/current/cn/manual/sharding-jdbc/configuration/config-spring-boot/
demo
https://github.com/huangzhenshi/shardingjdbc_springboot
读写分离
核心功能
- 提供一主多从的读写分离配置,可独立使用,也可配合分库分表使用。目前仅支持单主库。
- 独立使用读写分离支持SQL透传。
- 同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。
- 普通的查询数据操作所使用的数据库,可支持多从库。访问策略:strategy-type:ROUND_ROBIN,RANDOM 和自定义
- 基于Hint的强制主库路由,可手动强制部分读请求到主库上。(因为主从同步有延迟,对实时性要求高的系统,可以将部分读请求也走主库)
配置:(SpringBoot + 读写分离)
- 数据库准备:
- 主从数据库首先要配置好主从配置,并且创建好对应的表和数据
- 同时主、从库要对应用程序进行授权,否则没有权限访问
- 配置一主多从数据源:master、slave0、slave1
- 配置从库的访问策略:随机、轮询(默认)、自定义 :randomStrategy
- 整合多个数据源:masterslave
sharding.jdbc.datasource.names=master,slave0,slave1
sharding.jdbc.datasource.master.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.master.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.master.url=jdbc:mysql://localhost:3306/testsync?characterEncoding=utf-8
sharding.jdbc.datasource.master.username=root
sharding.jdbc.datasource.master.password=123456
sharding.jdbc.datasource.slave0.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.slave0.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.slave0.url=jdbc:mysql://192.168.29.129:3306/testsync?characterEncoding=utf-8
sharding.jdbc.datasource.slave0.username=huangzs
sharding.jdbc.datasource.slave0.password=123456
sharding.jdbc.datasource.slave1.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.slave1.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.slave1.url=jdbc:mysql://192.168.29.130:3306/testsync?characterEncoding=utf-8
sharding.jdbc.datasource.slave1.username=huangzs
sharding.jdbc.datasource.slave1.password=123456
sharding.jdbc.config.masterslave.load-balance-algorithm-type=round_robin
sharding.jdbc.config.masterslave.name=dataSource
sharding.jdbc.config.masterslave.master-data-source-name=master
sharding.jdbc.config.masterslave.slave-data-source-names=slave0,slave1
sharding.jdbc.config.props.sql.show=true
- jar包依赖:springBoot版本
<dependency>
<groupId>io.shardingjdbc</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>2.0.0.M3</version>
</dependency>
API
- 强制走主库查询
HintManager.getInstance().setMasterRouteOnly();
网友评论