共计 8685 个字符,预计需要花费 22 分钟才能阅读完成。
配置示例
数据分片
dataSources: | |
ds0: !!org.apache.commons.dbcp.BasicDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
url: jdbc:mysql://localhost:3306/ds0 | |
username: root | |
password: | |
ds1: !!org.apache.commons.dbcp.BasicDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
url: jdbc:mysql://localhost:3306/ds1 | |
username: root | |
password: | |
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} | |
keyGenerator: | |
type: SNOWFLAKE | |
column: 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: | |
defaultKeyGenerator: | |
type: SNOWFLAKE | |
column: order_id | |
props: | |
sql.show: true |
读写拆散
dataSources: | |
ds_master: !!org.apache.commons.dbcp.BasicDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
url: jdbc:mysql://localhost:3306/ds_master | |
username: root | |
password: | |
ds_slave0: !!org.apache.commons.dbcp.BasicDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
url: jdbc:mysql://localhost:3306/ds_slave0 | |
username: root | |
password: | |
ds_slave1: !!org.apache.commons.dbcp.BasicDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
url: jdbc:mysql://localhost:3306/ds_slave1 | |
username: root | |
password: | |
masterSlaveRule: | |
name: ds_ms | |
masterDataSourceName: ds_master | |
slaveDataSourceNames: | |
- ds_slave0 | |
- ds_slave1 | |
props: | |
sql.show: true |
数据脱敏
dataSource: !!org.apache.commons.dbcp2.BasicDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
url: jdbc:mysql://127.0.0.1:3306/encrypt?serverTimezone=UTC&useSSL=false | |
username: root | |
password: | |
encryptRule: | |
encryptors: | |
encryptor_aes: | |
type: aes | |
props: | |
aes.key.value: 123456abc | |
encryptor_md5: | |
type: md5 | |
tables: | |
t_encrypt: | |
columns: | |
user_id: | |
plainColumn: user_plain | |
cipherColumn: user_cipher | |
encryptor: encryptor_aes | |
order_id: | |
cipherColumn: order_cipher | |
encryptor: encryptor_md5 | |
props: | |
query.with.cipher.column: true #是否应用密文列查问 |
数据分片 + 读写拆散
dataSources: | |
ds0: !!org.apache.commons.dbcp.BasicDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
url: jdbc:mysql://localhost:3306/ds0 | |
username: root | |
password: | |
ds0_slave0: !!org.apache.commons.dbcp.BasicDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
url: jdbc:mysql://localhost:3306/ds0_slave0 | |
username: root | |
password: | |
ds0_slave1: !!org.apache.commons.dbcp.BasicDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
url: jdbc:mysql://localhost:3306/ds0_slave1 | |
username: root | |
password: | |
ds1: !!org.apache.commons.dbcp.BasicDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
url: jdbc:mysql://localhost:3306/ds1 | |
username: root | |
password: | |
ds1_slave0: !!org.apache.commons.dbcp.BasicDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
url: jdbc:mysql://localhost:3306/ds1_slave0 | |
username: root | |
password: | |
ds1_slave1: !!org.apache.commons.dbcp.BasicDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
url: jdbc:mysql://localhost:3306/ds1_slave1 | |
username: root | |
password: | |
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} | |
keyGenerator: | |
type: SNOWFLAKE | |
column: 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 | |
broadcastTables: | |
- t_config | |
defaultDataSourceName: ds_0 | |
defaultTableStrategy: | |
none: | |
defaultKeyGenerator: | |
type: SNOWFLAKE | |
column: order_id | |
masterSlaveRules: | |
ms_ds0: | |
masterDataSourceName: ds0 | |
slaveDataSourceNames: | |
- ds0_slave0 | |
- ds0_slave1 | |
loadBalanceAlgorithmType: ROUND_ROBIN | |
ms_ds1: | |
masterDataSourceName: ds1 | |
slaveDataSourceNames: | |
- ds1_slave0 | |
- ds1_slave1 | |
loadBalanceAlgorithmType: ROUND_ROBIN | |
props: | |
sql.show: true |
数据分片 + 数据脱敏
dataSources: | |
ds_0: !!com.zaxxer.hikari.HikariDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_0 | |
username: root | |
password: | |
ds_1: !!com.zaxxer.hikari.HikariDataSource | |
driverClassName: com.mysql.jdbc.Driver | |
jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_1 | |
username: root | |
password: | |
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} | |
keyGenerator: | |
type: SNOWFLAKE | |
column: 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 | |
defaultTableStrategy: | |
none: | |
encryptRule: | |
encryptors: | |
encryptor_aes: | |
type: aes | |
props: | |
aes.key.value: 123456abc | |
tables: | |
t_order: | |
columns: | |
order_id: | |
plainColumn: order_plain | |
cipherColumn: order_cipher | |
encryptor: encryptor_aes | |
props: | |
sql.show: true |
治理
# 省略数据分片、读写拆散和数据脱敏配置 | |
orchestration: | |
orchestration_ds: | |
orchestrationType: registry_center,config_center | |
instanceType: zookeeper | |
serverLists: localhost:2181 | |
namespace: orchestration | |
props: | |
overwrite: true |
配置项阐明
数据分片
dataSources: #数据源配置,可配置多个 data_source_name | |
<data_source_name>: #<!! 数据库连接池实现类 > `!!` 示意实例化该类 | |
driverClassName: #数据库驱动类名 | |
url: #数据库 url 连贯 | |
username: #数据库用户名 | |
password: #数据库明码 | |
# ... 数据库连接池的其它属性 | |
shardingRule: | |
tables: #数据分片规定配置,可配置多个 logic_table_name | |
<logic_table_name>: #逻辑表名称 | |
actualDataNodes: #由数据源名 + 表名组成,以小数点分隔。多个表以逗号分隔,反对 inline 表达式。缺省示意应用已知数据源与逻辑表名称生成数据节点,用于播送表(即每个库中都须要一个同样的表用于关联查问,多为字典表)或只分库不分表且所有库的表构造完全一致的状况 | |
databaseStrategy: #分库策略,缺省示意应用默认分库策略,以下的分片策略只能选其一 | |
standard: #用于单分片键的规范分片场景 | |
shardingColumn: #分片列名称 | |
preciseAlgorithmClassName: #准确分片算法类名称,用于 = 和 IN。。该类需实现 PreciseShardingAlgorithm 接口并提供无参数的结构器 | |
rangeAlgorithmClassName: #范畴分片算法类名称,用于 BETWEEN,可选。。该类需实现 RangeShardingAlgorithm 接口并提供无参数的结构器 | |
complex: #用于多分片键的复合分片场景 | |
shardingColumns: #分片列名称,多个列以逗号分隔 | |
algorithmClassName: #复合分片算法类名称。该类需实现 ComplexKeysShardingAlgorithm 接口并提供无参数的结构器 | |
inline: #行表达式分片策略 | |
shardingColumn: #分片列名称 | |
algorithmInlineExpression: #分片算法行表达式,需合乎 groovy 语法 | |
hint: #Hint 分片策略 | |
algorithmClassName: #Hint 分片算法类名称。该类需实现 HintShardingAlgorithm 接口并提供无参数的结构器 | |
none: #不分片 | |
tableStrategy: #分表策略,同分库策略 | |
keyGenerator: | |
column: #自增列名称,缺省示意不应用自增主键生成器 | |
type: #自增列值生成器类型,缺省示意应用默认自增列值生成器。可应用用户自定义的列值生成器或抉择内置类型:SNOWFLAKE/UUID | |
props: #属性配置, 留神:应用 SNOWFLAKE 算法,须要配置 worker.id 与 max.tolerate.time.difference.milliseconds 属性。若应用此算法生成值作分片值,倡议配置 max.vibration.offset 属性 | |
<property-name>: 属性名称 | |
bindingTables: #绑定表规定列表 | |
- <logic_table_name1, logic_table_name2, ...> | |
- <logic_table_name3, logic_table_name4, ...> | |
- <logic_table_name_x, logic_table_name_y, ...> | |
broadcastTables: #播送表规定列表 | |
- table_name1 | |
- table_name2 | |
- table_name_x | |
defaultDataSourceName: #未配置分片规定的表将通过默认数据源定位 | |
defaultDatabaseStrategy: #默认数据库分片策略,同分库策略 | |
defaultTableStrategy: #默认表分片策略,同分库策略 | |
defaultKeyGenerator: #默认的主键生成算法 如果没有设置, 默认为 SNOWFLAKE 算法 | |
type: #默认自增列值生成器类型,缺省将应用 org.apache.shardingsphere.core.keygen.generator.impl.SnowflakeKeyGenerator。可应用用户自定义的列值生成器或抉择内置类型:SNOWFLAKE/UUID | |
props: | |
<property-name>: #自增列值生成器属性配置, 比方 SNOWFLAKE 算法的 worker.id 与 max.tolerate.time.difference.milliseconds | |
masterSlaveRules: #读写拆散规定,详见读写拆散局部 | |
<data_source_name>: #数据源名称,须要与实在数据源匹配,可配置多个 data_source_name | |
masterDataSourceName: #详见读写拆散局部 | |
slaveDataSourceNames: #详见读写拆散局部 | |
loadBalanceAlgorithmType: #详见读写拆散局部 | |
props: #读写拆散负载算法的属性配置 | |
<property-name>: #属性值 | |
props: #属性配置 | |
sql.show: #是否开启 SQL 显示,默认值: false | |
executor.size: #工作线程数量,默认值: CPU 核数 | |
max.connections.size.per.query: # 每个查问能够关上的最大连贯数量, 默认为 1 | |
check.table.metadata.enabled: #是否在启动时查看分表元数据一致性,默认值: false |
读写拆散
dataSources: #省略数据源配置,与数据分片统一 | |
masterSlaveRule: | |
name: #读写拆散数据源名称 | |
masterDataSourceName: #主库数据源名称 | |
slaveDataSourceNames: #从库数据源名称列表 | |
- <data_source_name1> | |
- <data_source_name2> | |
- <data_source_name_x> | |
loadBalanceAlgorithmType: #从库负载平衡算法类型,可选值:ROUND_ROBIN,RANDOM。若 `loadBalanceAlgorithmClassName` 存在则疏忽该配置 | |
props: #读写拆散负载算法的属性配置 | |
<property-name>: #属性值 |
数据脱敏
dataSource: #省略数据源配置 | |
encryptRule: | |
encryptors: | |
<encryptor-name>: | |
type: #加解密器类型,可自定义或抉择内置类型:MD5/AES | |
props: #属性配置, 留神:应用 AES 加密器,须要配置 AES 加密器的 KEY 属性:aes.key.value | |
aes.key.value: | |
tables: | |
<table-name>: | |
columns: | |
<logic-column-name>: | |
plainColumn: #存储明文的字段 | |
cipherColumn: #存储密文的字段 | |
assistedQueryColumn: #辅助查问字段,针对 ShardingQueryAssistedEncryptor 类型的加解密器进行辅助查问 | |
encryptor: #加密器名字 |
治理
dataSources: #省略数据源配置 | |
shardingRule: #省略分片规定配置 | |
masterSlaveRule: #省略读写拆散规定配置 | |
encryptRule: #省略数据脱敏规定配置 | |
orchestration: | |
orchestration_ds: #治理实例名称 | |
orchestrationType: #配置 / 注册核心的类型,例如 config_center/registry_center | |
instanceType: #配置 / 注册核心类型。如:zookeeper | |
serverLists: #连贯配置 / 注册核心服务器的列表。包含 IP 地址和端口号。多个地址用逗号分隔。如: host1:2181,host2:2181 | |
namespace: #配置 / 注册核心的命名空间 | |
props: #其它配置 | |
overwrite: #本地配置是否笼罩配置核心配置。如果可笼罩,每次启动都以本地配置为准 | |
digest: #连贯注册核心的权限令牌。缺省为不须要权限验证 | |
operationTimeoutMilliseconds: #操作超时的毫秒数,默认 500 毫秒 | |
maxRetries: #连贯失败后的最大重试次数,默认 3 次 | |
retryIntervalMilliseconds: #重试距离毫秒数,默认 500 毫秒 | |
timeToLiveSeconds: #长期节点存活秒数,默认 60 秒 |
Yaml 语法阐明
!!
示意实例化该类
-
示意能够蕴含一个或多个
[]
示意数组,能够与减号互相替换应用
正文完