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.
>
>
>
>


Reply via email to