分库分表

6. SpringBoot整合ShardingJdbc分库分表+

2020-05-14  本文已影响0人  茶还是咖啡

基础信息请参照https://www.jianshu.com/p/865c18d006a5


我们在master库中对user表进行水平拆分,按照用户性别对用户进行路由。

用户表的ER图如下


配置信息

dataSources:
  ds_master: !!com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://10.241.241.20:6606/spark?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
    username: root
    password:
  ds_slave0: !!com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://10.241.241.20:6607/spark?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
    username: root
    password:
  ds_slave1: !!com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://10.241.241.20:6608/spark?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
    username: root
    password:
shardingRule:
  masterSlaveRules:
    ms_ds0:
      masterDataSourceName: ds_master
      slaveDataSourceNames:
        - ds_slave0
        - ds_slave1
      loadBalanceAlgorithmType: ROUND_ROBIN
  tables:
    t_user:
      actualDataNodes: ms_ds0.t_user${0..1}
      tableStrategy:
        inline:
          shardingColumn: sex
          algorithmExpression: t_user${sex % 2}
      keyGenerator:
        type: SNOWFLAKE
        column: id
  bindingTables:
    - t_user
props:
  sql.show: true

配置数据源

@Configuration
public class DataSourceConfiguration {

    @Resource
    private ShardingDataSourceYamlConfig shardingDataSourceYamlConfig;

    @Bean
    @Primary
    public DataSource dataSource() throws IOException, SQLException {
        return YamlShardingDataSourceFactory.createDataSource(shardingDataSourceYamlConfig.getShardingFileByProfileActive());
    }
}

源码地址:https://github.com/xiao-ren-wu/sharding-all/tree/master/sub-read-write-split

上一篇 下一篇

猜你喜欢

热点阅读