关于数据库:ShardingSphere-4x-ShardingJDBC-用户手册之YAML配置手册

61次阅读

共计 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 语法阐明

!! 示意实例化该类

- 示意能够蕴含一个或多个

[] 示意数组,能够与减号互相替换应用

正文完
 0