is shadow database configuration exactly same as real database configuration? If it is same, or it may be same, there should have a simple way to configurate. BTW, what is shadow database for? I mean what shadow database’s purpose is? I have read the mail before about shadow database ,but I don’t understand.
发送自 Windows 10 版邮件应用 发件人: xia Yanick 发送时间: 2019年12月10日 15:47 收件人: [email protected] 主题: [Discuss] Shadow Database Configuration Yaml 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.
