Got it.Thanks. Because of they are same, reduplicative configuration is not necessary , We just need to explicitly declare a property to enable or disable the shadow database
发送自 Windows 10 版邮件应用 发件人: xia Yanick 发送时间: 2019年12月10日 16:52 收件人: [email protected] 主题: Re: 回复: [Discuss] Shadow DatabaseConfiguration Yaml Dear Xiang: the purpose of shadow database for the `End to End Test`, almost we want test the real system on the product environment, but nothing persistence to the real database. So we need a shadow database for the online database. I think sharing rule/ encrypt rule for shadow database is same to real database. Yanick Xia CODING BOY Email: [email protected] Website: blog.yanick.site On Dec 10, 2019, 16:40 +0800, CongXiang <[email protected]>, wrote: > 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. > > > >
