springboot mysql 主从_springboot数据库主从方案

本文介绍了如何在SpringBoot项目中实现MySQL主从配置,包括数据库环境搭建、多数据源配置、Mybatis数据源设置、拦截器和注解选择主从库。详细展示了代码示例,帮助读者理解如何在代码中动态选择数据源。
摘要由CSDN通过智能技术生成

本篇分享数据库主从方案,案例采用springboot+mysql+mybatis演示;要想在代码中做主从选择,通常需要明白什么时候切换数据源,怎么切换数据源,下面以代码示例来做阐述;

搭建测试环境(1个master库2个slave库)

DataSource多数据源配置

设置mybatis数据源

拦截器+注解设置master和slave库选择

选出当前请求要使用的slave从库

测试用例

搭建测试环境(1个master库2个slave库)

由于测试资源优先在本地模拟创建3个数据库,分别是1个master库2个slave库,里面分别都有一个tblArticle表,内容也大致相同(为了演示主从效果,我把从库中表的title列值增加了slave字样):

75cdcf53500fc2856734c91a5d6bca59.png

再来创建一个db.properties,分别配置3个数据源,格式如下:

1 spring.datasource0.jdbc-url=jdbc:mysql://localhost:3306/db0?useUnicode=true&characterEncoding=utf-8&useSSL=false

2 spring.datasource0.username=root3 spring.datasource0.password=123456

4 spring.datasource0.driver-class-name=com.mysql.jdbc.Driver5

6 spring.datasource1.jdbc-url=jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf-8&useSSL=false

7 spring.datasource1.username=root8 spring.datasource1.password=123456

9 spring.datasource1.driver-class-name=com.mysql.jdbc.Driver10

11 spring.datasource2.jdbc-url=jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=utf-8&useSSL=false

12 spring.datasource2.username=root13 spring.datasource2.password=123456

14 spring.datasource2.driver-class-name=com.mysql.jdbc.Driver

同时我们创建具有对应关系的DbType枚举,帮助我们使代码更已读:

1 public classDbEmHelper {2 public enumDbTypeEm {3 db0(0, "db0(默认master)", -1),4 db1(1, "db1", 0),5 db2(2, "db2", 1);6

7 /**8 * 用于筛选从库9 *10 * @param slaveNum 从库顺序编号 0开始11 * @return12 */

13 public static Optional getDbTypeBySlaveNum(intslaveNum) {14 return Arrays.stream(DbTypeEm.values()).filter(b -> b.getSlaveNum() ==slaveNum).findFirst();15 }16

17 DbTypeEm(int code, String des, intslaveNum) {18 this.code =code;19 this.des =des;20 this.slaveNum =slaveNum;21 }22

23 private intcode;24 privateString des;25 private intslaveNum

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值