You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shardingsphere.apache.org by CongXiang <23...@qq.com> on 2019/12/10 08:40:38 UTC
回复: [Discuss] Shadow Database Configuration Yaml
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
收件人: dev@shardingsphere.apache.org
主题: [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.