Sharding-Jdbc如何配置主从读写分离模式
作者:帅气的人123
文章介绍了如何使用Sharding-JDBC实现MySQL的读写分离,通过配置主从数据源和读写分离策略,可以在项目中实现高效的数据库读写操作,同时,文章还提到解决MySQL连接异常的一个常见方法
Sharding-Jdbc 配置主从模式
我们项目的读写分离的主从模式项目中一般可以分为多种方式来实现,可以手动在代码 Java 中配置多种数据源来实现读写分离的模式,我们也可以通过第三方的框架来实现读写分离例如我们的 Sharding-jdbc
,也可以是我们的MyCat
的来实现读写分离。
- Java 代码的方式配置多种数据源
- Sharding-Jdbc
- MyCat
今天我们就来讲解一下如何使用 Sharding-jdbc
来实现读写分离。
使用 YMAL
方式来实现配置。
配置 master
数据源和 slave
数据源。我们这次是的方案是一主多从的方式来实现读写分离,mysql
的主从搭建我们这次就不说了。
我们这次就是主要来实现 sharding-jdbc
的方式来实现读写分离
Sharding-jdbc 读写分离配置
我们首先要引入 MAVEN
依赖
<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId> <version>5.1.1</version> </dependency>
我们这次使用的版本是比较新的版本。
配置数据源以及数据源的名字
spring: shardingsphere: # 内存模式 mode: type: Memory # 数据源配置 datasource: names: master,slave # 主数据源 master: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.jc.mysql.Driver jdbc-url: jdbc:mysql://localhost:3306/shardingjdbc?allowPublicKeyRetrieval=true username: root password: 123456 # 从机数据源 slave: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.jc.mysql.Driver jdbc-url: jdbc:mysql://localhost:3306/shardingjdbc?allowPublicKeyRetrieval=true username: root password: 123456
主要是配置数据源的链接地址和账户以及密码。
读写分离的策略
spring: shardingsphere: rules: readwrite-splitting: data-sources: mydatasource: # 类型是静态还是动态 type: Static props: # 写入数据 write-data-source-name: master # 读数据 read-data-source-names: slave # 使用的逻辑策略 load-balancer-name: round-alg # 负载均衡策略 load-balancers: # 轮询 round-alg: type: ROUND_ROBIN
这里的是配置写数据和读数据使用的数据源
完整配置
spring: shardingsphere: mode: type: Memory # 数据源配置 datasource: names: master,slave # 主数据源 master: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.jc.mysql.Driver jdbc-url: jdbc:mysql://localhost:3306/shardingjdbc?allowPublicKeyRetrieval=true username: root password: 123456 # 从机数据源 slave: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.jc.mysql.Driver jdbc-url: jdbc:mysql://localhost:3306/shardingjdbc?allowPublicKeyRetrieval=true username: root password: 123456 rules: readwrite-splitting: data-sources: mydatasource: # 类型是静态还是动态 type: Static props: write-data-source-name: master read-data-source-names: slave # 使用的逻辑策略 load-balancer-name: round-alg # 负载均衡策略 load-balancers: # 轮询 round-alg: type: ROUND_ROBIN # 随机 random-alg: type: RANDOM # 权重,我们在配置权重的时候必须配置各个 slave 的权重值,值的数据类型为 double weight-alg: type: WEIGHT props: slave: 1.0 props: show-sql: true
结束!
中间我在启动的时候遇到一个 mysql
的连接异常
Public Key Retrieval is not allowed
这种情况可以配置参数的时候设置连接参数 ?allowPublicKeyRetrieval=true
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。