jdbc sharding yml配置_ShardingSphere 4.x Sharding-JDBC 用户手册之YAML配置手册

配置示例

配置项说明

Yaml语法说明

配置示例

数据分片

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:

name: orchestration_ds

overwrite: true

registry:

type: zookeeper

namespace: orchestration

serverLists: localhost:2181

配置项说明

数据分片

dataSources: #数据源配置,可配置多个data_source_name

: # `!!`表示实例化该类

driverClassName: #数据库驱动类名

url: #数据库url连接

username: #数据库用户名

password: #数据库密码

# ... 数据库连接池的其它属性

shardingRule:

tables: #数据分片规则配置,可配置多个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属性

: 属性名称

bindingTables: #绑定表规则列表

-

-

-

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:

: #自增列值生成器属性配置, 比如SNOWFLAKE算法的worker.id与max.tolerate.time.difference.milliseconds

masterSlaveRules: #读写分离规则,详见读写分离部分

: #数据源名称,需要与真实数据源匹配,可配置多个data_source_name

masterDataSourceName: #详见读写分离部分

slaveDataSourceNames: #详见读写分离部分

loadBalanceAlgorithmType: #详见读写分离部分

props: #读写分离负载算法的属性配置

: #属性值

props: #属性配置

sql.show: #是否开启SQL显示,默认值: false

executor.size: #工作线程数量,默认值: CPU核数

max.connections.size.per.query: # 每个查询可以打开的最大连接数量,默认为1

check.table.metadata.enabled: #是否在启动时检查分表元数据一致性,默认值: false

读写分离

dataSources: #省略数据源配置,与数据分片一致

masterSlaveRule:

name: #读写分离数据源名称

masterDataSourceName: #主库数据源名称

slaveDataSourceNames: #从库数据源名称列表

-

-

-

loadBalanceAlgorithmType: #从库负载均衡算法类型,可选值:ROUND_ROBIN,RANDOM。若`loadBalanceAlgorithmClassName`存在则忽略该配置

props: #读写分离负载算法的属性配置

: #属性值

数据脱敏

dataSource: #省略数据源配置

encryptRule:

encryptors:

:

type: #加解密器类型,可自定义或选择内置类型:MD5/AES

props: #属性配置, 注意:使用AES加密器,需要配置AES加密器的KEY属性:aes.key.value

aes.key.value:

tables:

:

columns:

:

plainColumn: #存储明文的字段

cipherColumn: #存储密文的字段

assistedQueryColumn: #辅助查询字段,针对ShardingQueryAssistedEncryptor类型的加解密器进行辅助查询

encryptor: #加密器名字

治理

dataSources: #省略数据源配置

shardingRule: #省略分片规则配置

masterSlaveRule: #省略读写分离规则配置

encryptRule: #省略数据脱敏规则配置

orchestration:

name: #治理实例名称

overwrite: #本地配置是否覆盖注册中心配置。如果可覆盖,每次启动都以本地配置为准

registry: #注册中心配置

type: #配置中心类型。如:zookeeper

serverLists: #连接注册中心服务器的列表。包括IP地址和端口号。多个地址用逗号分隔。如: host1:2181,host2:2181

namespace: #注册中心的命名空间

digest: #连接注册中心的权限令牌。缺省为不需要权限验证

operationTimeoutMilliseconds: #操作超时的毫秒数,默认500毫秒

maxRetries: #连接失败后的最大重试次数,默认3次

retryIntervalMilliseconds: #重试间隔毫秒数,默认500毫秒

timeToLiveSeconds: #临时节点存活秒数,默认60秒

Yaml语法说明

!! 表示实例化该类

- 表示可以包含一个或多个

[] 表示数组,可以与减号相互替换使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值