It seems difficult to understand, shall we create datasource groups distinguished with actual and shadow then rewrite the actualDataNodes based on shadow switch configuration?
------------------ Zhao Jun (cherrylzhao) Apache Sharding-Sphere & ServiceComb > On Dec 10, 2019, at 3:46 PM, xia Yanick <[email protected]> wrote: > > Hi everyone: > we will add shadow yaml configuration file > the first style: add shadow database for every actual database , such as: > > # shadow config > dataSources: > master_ds_0: !!com.zaxxer.hikari.HikariDataSource > driverClassName: org.h2.Driver > jdbcUrl: > jdbc:h2:mem:master_ds_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL > username: sa > password: > master_ds_0_slave_0: !!com.zaxxer.hikari.HikariDataSource > driverClassName: org.h2.Driver > jdbcUrl: > jdbc:h2:mem:master_ds_0_slave_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL > username: sa > password: > shadowRule: > shadowDataSources: # the shadow database, one to one mapping > master_ds_0: !!com.zaxxer.hikari.HikariDataSource > driverClassName: org.h2.Driver > jdbcUrl: > jdbc:h2:mem:master_ds_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL > username: sa > password: > master_ds_0_slave_0: !!com.zaxxer.hikari.HikariDataSource > driverClassName: org.h2.Driver > jdbcUrl: > jdbc:h2:mem:master_ds_0_slave_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL > username: sa > This way, require that every shadowDatasource map key mapping one of actual > datasources item key. > > > the other way: add copy configuration for shadow rule > # shadow config > dataSources: > master_ds_0: !!com.zaxxer.hikari.HikariDataSource > driverClassName: org.h2.Driver > jdbcUrl: > jdbc:h2:mem:master_ds_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL > username: sa > password: > master_ds_0_slave_0: !!com.zaxxer.hikari.HikariDataSource > driverClassName: org.h2.Driver > jdbcUrl: > jdbc:h2:mem:master_ds_0_slave_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL > username: sa > password: > > shardingRule: > tables: > t_user: > actualDataNodes: ds_${0..1}.t_user_${0..15} > databaseStrategy: > complex: > shardingColumns: region_id, user_id > algorithmClassName: TestDatabaseComplexAlgorithmClassName > tableStrategy: > complex: > shardingColumns: region_id, user_id > algorithmClassName: TestTableComplexAlgorithmClassName > bindingTables: > - t_order, t_order_item > broadcastTables: > - t_config > defaultDataSourceName: default_ds > defaultDatabaseStrategy: > inline: > shardingColumn: order_id > algorithmExpression: ds_${order_id % 2} > defaultTableStrategy: > none: > masterSlaveRules: > ds_0: > masterDataSourceName: master_ds_0 > slaveDataSourceNames: > - master_ds_0_slave_0 > - master_ds_0_slave_1 > loadBalanceAlgorithmType: ROUND_ROBIN > ds_1: > masterDataSourceName: master_ds_1 > slaveDataSourceNames: > - master_ds_1_slave_0 > - master_ds_1_slave_1 > loadBalanceAlgorithmType: RANDOM > shadowRule: # shadow rule > column: is_shadow > value: true > dataSources: > master_ds_0: !!com.zaxxer.hikari.HikariDataSource > driverClassName: org.h2.Driver > jdbcUrl: > jdbc:h2:mem:master_ds_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL > username: sa > password: > master_ds_0_slave_0: !!com.zaxxer.hikari.HikariDataSource > driverClassName: org.h2.Driver > jdbcUrl: > jdbc:h2:mem:master_ds_0_slave_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL > username: sa > password: > shardingRule: > tables: > t_user: > actualDataNodes: ds_${0..1}.t_user_${0..15} > databaseStrategy: > complex: > shardingColumns: region_id, user_id > algorithmClassName: TestDatabaseComplexAlgorithmClassName > tableStrategy: > complex: > shardingColumns: region_id, user_id > algorithmClassName: TestTableComplexAlgorithmClassName > bindingTables: > - t_order, t_order_item > broadcastTables: > - t_config > defaultDataSourceName: default_ds > defaultDatabaseStrategy: > inline: > shardingColumn: order_id > algorithmExpression: ds_${order_id % 2} > defaultTableStrategy: > none: > masterSlaveRules: > ds_0: > masterDataSourceName: master_ds_0 > slaveDataSourceNames: > - master_ds_0_slave_0 > - master_ds_0_slave_1 > loadBalanceAlgorithmType: ROUND_ROBIN > ds_1: > masterDataSourceName: master_ds_1 > slaveDataSourceNames: > - master_ds_1_slave_0 > - master_ds_1_slave_1 > loadBalanceAlgorithmType: RANDOM > > props: > sql.show: true > This way will has something verbose config rule. > >
