0
点赞
收藏
分享

微信扫一扫

dynamic-datasource + sharding 动态刷新表

M4Y 2022-02-21 阅读 106

需求

在系统中可能会遇到 动态数据源 以及分表分库,动态分表

的情况,动态数据源切换 采用的

分表分库采用

将表shardingsphere 交给DynamicDataSource管理

特别注意   这里的DataSource  指定  ShardingDataSource  不然后面刷新Sharding动态表时会转换失败。

动态刷新表

特别注意 我这里是按年分表 ,具体的分表策略你们自己安需求弄。

配置 yml

spring:
  main:
    allow-bean-definition-overriding: true
  ######## 配置多数据源 ########
  datasource:
    dynamic:
      #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      strict: true
      datasource:
        master:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:192.168.0.252}:${DATASOURCE_PORT:3306}/iot_platform?characterEncoding=UTF-8&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
          username: ${DATASOURCE_USERNAME:root}
          password: ${DATASOURCE_PASSWORD:123456}
  ###   这里采用的按年分表策略  对拉取的公厕硬件设备数据进行分表 暂时不分库 #####
  shardingsphere:
    props:
      sql:
        show: true
    datasource:
      names: toilet
      ###  主数据库 ###
      toilet:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:192.168.0.252}:${DATASOURCE_PORT:3306}/iot_toilet?characterEncoding=UTF-8&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
        username: ${DATASOURCE_USERNAME:root}
        password: ${DATASOURCE_PASSWORD:123456}
    sharding:
      tables:
        wc_passenger:
          ### 数据表 按年分表 ####   流量
          actual-data-nodes: toilet.wc_passenger
          table-strategy:
            standard:
              sharding-column: created_time
              precise-algorithm-class-name: xxx
              range-algorithm-class-name: xxxx
举报

相关推荐

0 条评论