You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shardingsphere.apache.org by xia Yanick <ya...@gmail.com> on 2019/12/10 07:46:57 UTC
[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.
Re: [Discuss] Shadow Database Configuration Yaml
Posted by zhaojun <zh...@126.com>.
Hi, Yanick
I have got your first design, we can simplify it using a `shadow_` prefix convertion like this:
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:
shadow_master_ds_0: !!com.zaxxer.hikari.HikariDataSource
driverClassName: org.h2.Driver
jdbcUrl: jdbc:h2:mem:shadow_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:
shadow_master_ds_0_slave_0: !!com.zaxxer.hikari.HikariDataSource
driverClassName: org.h2.Driver
jdbcUrl: jdbc:h2:mem:shadow_master_ds_0_slave_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
username: sa
password:
……..
props:
shadow.enable: true
Sharding-core can group datasources internal based on this convertion,
when user start a shadow switch, actual datasources could be routed to shadow group smoothly
------------------
Zhao Jun (cherrylzhao)
Apache ShardingSphere & ServiceComb
> On Dec 10, 2019, at 5:37 PM, xia Yanick <ya...@gmail.com> wrote:
>
> Dear Jun:
> Great idea, the first way that add the datasources for shadow rule easy to implement, if we add a new concepts for `datasource group` may add other compatibility code for ShardingRule/MasterRule/EncRule.
>
> Yanick Xia
> CODING BOY
> Email: yanick.xia@gmail.com
> Website: blog.yanick.site
>
> On Dec 10, 2019, 17:27 +0800, zhaojun <zh...@126.com>, wrote:
>> 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 <ya...@gmail.com> 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.
>>>
>>>
>>
Re: [Discuss] Shadow Database Configuration Yaml
Posted by xia Yanick <ya...@gmail.com>.
Dear Jun:
Great idea, the first way that add the datasources for shadow rule easy to implement, if we add a new concepts for `datasource group` may add other compatibility code for ShardingRule/MasterRule/EncRule.
Yanick Xia
CODING BOY
Email: yanick.xia@gmail.com
Website: blog.yanick.site
On Dec 10, 2019, 17:27 +0800, zhaojun <zh...@126.com>, wrote:
> 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 <ya...@gmail.com> 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.
> >
> >
>
Re: [Discuss] Shadow Database Configuration Yaml
Posted by zhaojun <zh...@126.com>.
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 <ya...@gmail.com> 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.
>
>
回复: [Discuss] Shadow Database Configuration Yaml
Posted by CongXiang <23...@qq.com>.
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.
回复: 回复: [Discuss] Shadow DatabaseConfiguration Yaml
Posted by CongXiang <23...@qq.com>.
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
收件人: dev@shardingsphere.apache.org
主题: 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: yanick.xia@gmail.com
Website: blog.yanick.site
On Dec 10, 2019, 16:40 +0800, CongXiang <23...@qq.com>, 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
> 收件人: 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.
>
>
>
>
Re:回复: 回复: [Discuss] Shadow DatabaseConfiguration Yaml
Posted by xia Yanick <ya...@gmail.com>.
Right. The first way is simple, just add a configruation datasource. I got it
Yanick Xia
CODING BOY
Email: yanick.xia@gmail.com
Website: blog.yanick.site
On Dec 10, 2019, 17:20 +0800, CongXiang <23...@qq.com>, wrote:
> 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
> 收件人: dev@shardingsphere.apache.org
> 主题: 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: yanick.xia@gmail.com
> Website: blog.yanick.site
>
> On Dec 10, 2019, 16:40 +0800, CongXiang <23...@qq.com>, 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
> > 收件人: 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.
> >
> >
> >
> >
>
>
Re: 回复: [Discuss] Shadow Database Configuration Yaml
Posted by xia Yanick <ya...@gmail.com>.
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: yanick.xia@gmail.com
Website: blog.yanick.site
On Dec 10, 2019, 16:40 +0800, CongXiang <23...@qq.com>, 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
> 收件人: 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.
>
>
>
>