Sharding-Proxy support multiple logic schema, for every configuration file which prefix as config-
, and suffix as .yaml
.
Below is configuration example of config-xxx.yaml
.
schemaName: sharding_db
dataSources:
ds0:
url: jdbc:mysql://localhost:3306/ds0
username: root
password:
autoCommit: true
connectionTimeout: 30000
idleTimeout: 60000
maxLifetime: 1800000
maximumPoolSize: 65
ds1:
url: jdbc:mysql://localhost:3306/ds1
username: root
password:
autoCommit: true
connectionTimeout: 30000
idleTimeout: 60000
maxLifetime: 1800000
maximumPoolSize: 65
shardingRule:
tables:
t_order:
actualDataNodes: ds${0..1}.t_order${0..1}
databaseStrategy:
inline:
shardingColumn: user_id
algorithmExpression: ds${user_id % 2}
tableStrategy:
inline:
shardingColumn: order_id
algorithmExpression: t_order${order_id % 2}
keyGeneratorColumnName: order_id
t_order_item:
actualDataNodes: ds${0..1}.t_order_item${0..1}
databaseStrategy:
inline:
shardingColumn: user_id
algorithmExpression: ds${user_id % 2}
tableStrategy:
inline:
shardingColumn: order_id
algorithmExpression: t_order_item${order_id % 2}
bindingTables:
- t_order,t_order_item
broadcastTables:
- t_config
defaultDataSourceName: ds0
defaultTableStrategy:
none:
defaultKeyGeneratorClassName: io.shardingsphere.core.keygen.DefaultKeyGenerator
schemaName: sharding_master_slave_db
dataSources:
ds_master:
url: jdbc:mysql://localhost:3306/ds_master
username: root
password:
autoCommit: true
connectionTimeout: 30000
idleTimeout: 60000
maxLifetime: 1800000
maximumPoolSize: 65
ds_slave0:
url: jdbc:mysql://localhost:3306/ds_slave0
username: root
password:
autoCommit: true
connectionTimeout: 30000
idleTimeout: 60000
maxLifetime: 1800000
maximumPoolSize: 65
ds_slave1:
url: jdbc:mysql://localhost:3306/ds_slave1
username: root
password:
autoCommit: true
connectionTimeout: 30000
idleTimeout: 60000
maxLifetime: 1800000
maximumPoolSize: 65
masterSlaveRule:
name: ds_ms
masterDataSourceName: ds_master
slaveDataSourceNames:
- ds_slave0
- ds_slave1
schemaName: sharding_master_slave_db
dataSources:
ds0:
url: jdbc:mysql://localhost:3306/ds0
username: root
password:
autoCommit: true
connectionTimeout: 30000
idleTimeout: 60000
maxLifetime: 1800000
maximumPoolSize: 65
ds0_slave0:
url: jdbc:mysql://localhost:3306/ds0_slave0
username: root
password:
autoCommit: true
connectionTimeout: 30000
idleTimeout: 60000
maxLifetime: 1800000
maximumPoolSize: 65
ds0_slave1:
url: jdbc:mysql://localhost:3306/ds0_slave1
username: root
password:
autoCommit: true
connectionTimeout: 30000
idleTimeout: 60000
maxLifetime: 1800000
maximumPoolSize: 65
ds1:
url: jdbc:mysql://localhost:3306/ds1
username: root
password:
autoCommit: true
connectionTimeout: 30000
idleTimeout: 60000
maxLifetime: 1800000
maximumPoolSize: 65
ds1_slave0:
url: jdbc:mysql://localhost:3306/ds1_slave0
username: root
password:
autoCommit: true
connectionTimeout: 30000
idleTimeout: 60000
maxLifetime: 1800000
maximumPoolSize: 65
ds1_slave1:
url: jdbc:mysql://localhost:3306/ds1_slave1
username: root
password:
autoCommit: true
connectionTimeout: 30000
idleTimeout: 60000
maxLifetime: 1800000
maximumPoolSize: 65
shardingRule:
tables:
t_order:
actualDataNodes: ms_ds${0..1}.t_order${0..1}
databaseStrategy:
inline:
shardingColumn: user_id
algorithmExpression: ms_ds${user_id % 2}
tableStrategy:
inline:
shardingColumn: order_id
algorithmExpression: t_order${order_id % 2}
keyGeneratorColumnName: order_id
t_order_item:
actualDataNodes: ms_ds${0..1}.t_order_item${0..1}
databaseStrategy:
inline:
shardingColumn: user_id
algorithmExpression: ms_ds${user_id % 2}
tableStrategy:
inline:
shardingColumn: order_id
algorithmExpression: t_order_item${order_id % 2}
bindingTables:
- t_order,t_order_item
defaultTableStrategy:
none:
defaultKeyGeneratorClassName: io.shardingsphere.core.keygen.DefaultKeyGenerator
masterSlaveRules:
ms_ds0:
masterDataSourceName: ds0
slaveDataSourceNames:
- ds0_slave0
- ds0_slave1
loadBalanceAlgorithmType: ROUND_ROBIN
configMap:
master-slave-key0: master-slave-value0
ms_ds1:
masterDataSourceName: ds1
slaveDataSourceNames:
- ds1_slave0
- ds1_slave1
loadBalanceAlgorithmType: ROUND_ROBIN
configMap:
master-slave-key1: master-slave-value1
#Ignore data sources, sharding and read-write splitting configuration
orchestration:
name: orchestration_ds
overwrite: true
registry:
namespace: orchestration
serverLists: localhost:2181
authentication:
username: root
password:
props:
executor.size: 16
sql.show: false
schemaName: #Logic database schema name
dataSources: #Data sources configuration, multiple `data_source_name` available
<data_source_name>: #Different with Sharding-JDBC, do not need configure data source pool here.
url: #Database URL
username: #Database username
password: #Database password
autoCommit: true #The default config of hikari connection pool
connectionTimeout: 30000 #The default config of hikari connection pool
idleTimeout: 60000 #The default config of hikari connection pool
maxLifetime: 1800000 #The default config of hikari connection pool
maximumPoolSize: 65 #The default config of hikari connection pool
shardingRule: #Ignore sharding rule configuration, same as Sharding-JDBC
schemaName: #Logic database schema name
dataSources: #Ignore data source configuration, same as sharding
masterSlaveRule: #Ignore read-write splitting rule configuration, same as Sharding-JDBC
Same as configuration of Sharding-JDBC.
#Ignore configuration which same as Sharding-JDBC
props:
acceptor.size: #Max thread count to handle client's requests, default value is CPU*2
proxy.transaction.enabled: #Enable transaction, only support XA now, default value is false
proxy.opentracing.enabled: #Enable open tracing, default value is false. More details please reference[APM](/en/features/orchestration/apm/)
check.table.metadata.enabled: #To check the metadata consistency of all the tables or not, default value : false
To perform Authorization for Sharding Proxy when login in. After configuring the username and password, you must use the correct username and password to login into the Proxy.
authentication:
username: root
password:
!!
means class instantiation
-
means one or multiple available
[]
means array, can replace -
each other