使用druid数据源进行配置主库和从库,并实现定时拉取从库数据功能
业务场景:Oracle数据库,项目中需要用到其它友商的数据,但是友商并未提供接口,而是直接提供了数据库,让我定时拉取同步其数据。
使用技术:使用了druid数据源,并配置从库
maven坐标
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
数据库连接配置:
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: oracle.jdbc.driver.OracleDriver
druid:
# 主库数据源
master:
url: jdbc:oracle:thin:@10.2.11.33:1521/xxxxx
username: xxxx
password: xxxx
slave:
# 从数据源开关/默认关闭
enabled: true
url: jdbc:oracle:thin:@10.2.11.33:1521/xxxxx2
username: xxxx
password: xxxx
# 初始连接数
initialSize: 10
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 100
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: jeethink
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
在mapper层使用从库:注意此处的@DataSource注解,这是druid的切换从库注解,标识此方法使用了从库数据源
@DataSource(value = DataSourceType.SLAVE)
List<ReportPppSlave> reportPppSlaveList(ReportPppSlaveParam reportPppSlaveParam);
Oracle在进行mybatis的mapper查询时容易找不到数据库,此时需要使用数据库.表名查询
浙公网安备 33010602011771号