使用druid数据源进行配置主库和从库,并实现定时拉取从库数据功能

发布时间 2023-12-21 10:46:30作者: jiangyang6634

业务场景: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查询时容易找不到数据库,此时需要使用数据库.表名查询