最近因为公司业务,数据量比较大,需要进行数据库查询优化,于是采用了TiDB分布式数据库,使用集群的方式减轻数据库压力。
中间引入了双数据源处理,也走了很多弯路在此进行记录,仅供参考
1、pom.xml引入相关相关配置
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
2、在application.yml文件配置相关连接配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
druid:
master:
url: jdbc:mysql://192.168.0.102:3306/spring_test1?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: root
slave:
url: jdbc:mysql://192.168.0.101:4000/sioo_test2?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: root
#初始化大小,最小,最大
initial-size: 5
max-active: 10
min-idle: 5
#配置获取连接等待超时的时间
max-wait: 6000
#检测连接是否有效的sql
validation-query: "select '1'"
validation-query-timeout: 2000
test-on-borrow: false
test-on-return: false
test-while-idle: true
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 600000
#配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
remove-abandoned: true
一、采用分包进行隔离不同的数据源
- 创建mapper.xml所对应的的mapper.class包(master、salve)
- 创建mapper.xml所在包(master、salve)
- 编写MasterDataSourcesConfig文件
package com.whl.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import o