ShardingSphere 4.x Sharding

配置示例

数据分片

1dataSources: 2 ds0: !!org.apache.commons.dbcp.BasicDataSource 3 driverClassName: com.mysql.jdbc.Driver 4 url: jdbc:mysql://localhost:3306/ds0 5 username: root 6 password: 7 ds1: !!org.apache.commons.dbcp.BasicDataSource 8 driverClassName: com.mysql.jdbc.Driver 9 url: jdbc:mysql://localhost:3306/ds1 10 username: root 11 password: 12 13shardingRule: 14 tables: 15 t_order: 16 actualDataNodes: ds${0..1}.t_order${0..1} 17 databaseStrategy: 18 inline: 19 shardingColumn: user_id 20 algorithmExpression: ds${user_id % 2} 21 tableStrategy: 22 inline: 23 shardingColumn: order_id 24 algorithmExpression: t_order${order_id % 2} 25 keyGenerator: 26 type: SNOWFLAKE 27 column: order_id 28 t_order_item: 29 actualDataNodes: ds${0..1}.t_order_item${0..1} 30 databaseStrategy: 31 inline: 32 shardingColumn: user_id 33 algorithmExpression: ds${user_id % 2} 34 tableStrategy: 35 inline: 36 shardingColumn: order_id 37 algorithmExpression: t_order_item${order_id % 2} 38 bindingTables: 39 - t_order,t_order_item 40 broadcastTables: 41 - t_config 42 43 defaultDataSourceName: ds0 44 defaultTableStrategy: 45 none: 46 defaultKeyGenerator: 47 type: SNOWFLAKE 48 column: order_id 49 50props: 51 sql.show: true

读写分离

1dataSources: 2 ds_master: !!org.apache.commons.dbcp.BasicDataSource 3 driverClassName: com.mysql.jdbc.Driver 4 url: jdbc:mysql://localhost:3306/ds_master 5 username: root 6 password: 7 ds_slave0: !!org.apache.commons.dbcp.BasicDataSource 8 driverClassName: com.mysql.jdbc.Driver 9 url: jdbc:mysql://localhost:3306/ds_slave0 10 username: root 11 password: 12 ds_slave1: !!org.apache.commons.dbcp.BasicDataSource 13 driverClassName: com.mysql.jdbc.Driver 14 url: jdbc:mysql://localhost:3306/ds_slave1 15 username: root 16 password: 17 18masterSlaveRule: 19 name: ds_ms 20 masterDataSourceName: ds_master 21 slaveDataSourceNames: 22 - ds_slave0 23 - ds_slave1 24 25props: 26 sql.show: true

数据脱敏

1dataSource: !!org.apache.commons.dbcp2.BasicDataSource 2 driverClassName: com.mysql.jdbc.Driver 3 url: jdbc:mysql://127.0.0.1:3306/encrypt?serverTimezone=UTC&useSSL=false 4 username: root 5 password: 6 7encryptRule: 8 encryptors: 9 encryptor_aes: 10 type: aes 11 props: 12 aes.key.value: 123456abc 13 encryptor_md5: 14 type: md5 15 tables: 16 t_encrypt: 17 columns: 18 user_id: 19 plainColumn: user_plain 20 cipherColumn: user_cipher 21 encryptor: encryptor_aes 22 order_id: 23 cipherColumn: order_cipher 24 encryptor: encryptor_md5 25props: 26 query.with.cipher.column: true #是否使用密文列查询

数据分片 + 读写分离

1dataSources: 2 ds0: !!org.apache.commons.dbcp.BasicDataSource 3 driverClassName: com.mysql.jdbc.Driver 4 url: jdbc:mysql://localhost:3306/ds0 5 username: root 6 password: 7 ds0_slave0: !!org.apache.commons.dbcp.BasicDataSource 8 driverClassName: com.mysql.jdbc.Driver 9 url: jdbc:mysql://localhost:3306/ds0_slave0 10 username: root 11 password: 12 ds0_slave1: !!org.apache.commons.dbcp.BasicDataSource 13 driverClassName: com.mysql.jdbc.Driver 14 url: jdbc:mysql://localhost:3306/ds0_slave1 15 username: root 16 password: 17 ds1: !!org.apache.commons.dbcp.BasicDataSource 18 driverClassName: com.mysql.jdbc.Driver 19 url: jdbc:mysql://localhost:3306/ds1 20 username: root 21 password: 22 ds1_slave0: !!org.apache.commons.dbcp.BasicDataSource 23 driverClassName: com.mysql.jdbc.Driver 24 url: jdbc:mysql://localhost:3306/ds1_slave0 25 username: root 26 password: 27 ds1_slave1: !!org.apache.commons.dbcp.BasicDataSource 28 driverClassName: com.mysql.jdbc.Driver 29 url: jdbc:mysql://localhost:3306/ds1_slave1 30 username: root 31 password: 32 33shardingRule: 34 tables: 35 t_order: 36 actualDataNodes: ms_ds${0..1}.t_order${0..1} 37 databaseStrategy: 38 inline: 39 shardingColumn: user_id 40 algorithmExpression: ms_ds${user_id % 2} 41 tableStrategy: 42 inline: 43 shardingColumn: order_id 44 algorithmExpression: t_order${order_id % 2} 45 keyGenerator: 46 type: SNOWFLAKE 47 column: order_id 48 t_order_item: 49 actualDataNodes: ms_ds${0..1}.t_order_item${0..1} 50 databaseStrategy: 51 inline: 52 shardingColumn: user_id 53 algorithmExpression: ms_ds${user_id % 2} 54 tableStrategy: 55 inline: 56 shardingColumn: order_id 57 algorithmExpression: t_order_item${order_id % 2} 58 bindingTables: 59 - t_order,t_order_item 60 broadcastTables: 61 - t_config 62 63 defaultDataSourceName: ds_0 64 defaultTableStrategy: 65 none: 66 defaultKeyGenerator: 67 type: SNOWFLAKE 68 column: order_id 69 70 masterSlaveRules: 71 ms_ds0: 72 masterDataSourceName: ds0 73 slaveDataSourceNames: 74 - ds0_slave0 75 - ds0_slave1 76 loadBalanceAlgorithmType: ROUND_ROBIN 77 ms_ds1: 78 masterDataSourceName: ds1 79 slaveDataSourceNames: 80 - ds1_slave0 81 - ds1_slave1 82 loadBalanceAlgorithmType: ROUND_ROBIN 83props: 84 sql.show: true

数据分片 + 数据脱敏

1dataSources: 2 ds_0: !!com.zaxxer.hikari.HikariDataSource 3 driverClassName: com.mysql.jdbc.Driver 4 jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_0 5 username: root 6 password: 7 ds_1: !!com.zaxxer.hikari.HikariDataSource 8 driverClassName: com.mysql.jdbc.Driver 9 jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_1 10 username: root 11 password: 12 13shardingRule: 14 tables: 15 t_order: 16 actualDataNodes: ds_${0..1}.t_order_${0..1} 17 databaseStrategy: 18 inline: 19 shardingColumn: user_id 20 algorithmExpression: ds_${user_id % 2} 21 tableStrategy: 22 inline: 23 shardingColumn: order_id 24 algorithmExpression: t_order_${order_id % 2} 25 keyGenerator: 26 type: SNOWFLAKE 27 column: order_id 28 t_order_item: 29 actualDataNodes: ds_${0..1}.t_order_item_${0..1} 30 databaseStrategy: 31 inline: 32 shardingColumn: user_id 33 algorithmExpression: ds_${user_id % 2} 34 tableStrategy: 35 inline: 36 shardingColumn: order_id 37 algorithmExpression: t_order_item_${order_id % 2} 38 bindingTables: 39 - t_order,t_order_item 40 41 defaultTableStrategy: 42 none: 43 44 encryptRule: 45 encryptors: 46 encryptor_aes: 47 type: aes 48 props: 49 aes.key.value: 123456abc 50 tables: 51 t_order: 52 columns: 53 order_id: 54 plainColumn: order_plain 55 cipherColumn: order_cipher 56 encryptor: encryptor_aes 57 58props: 59 sql.show: true

治理

1#省略数据分片、读写分离和数据脱敏配置 2 3orchestration: 4 orchestration_ds: 5 orchestrationType: registry_center,config_center 6 instanceType: zookeeper 7 serverLists: localhost:2181 8 namespace: orchestration 9 props: 10 overwrite: true

配置项说明

数据分片

1dataSources: #数据源配置,可配置多个data_source_name 2 <data_source_name>: #<!!数据库连接池实现类> `!!`表示实例化该类 3 driverClassName: #数据库驱动类名 4 url: #数据库url连接 5 username: #数据库用户名 6 password: #数据库密码 7 # ... 数据库连接池的其它属性 8 9shardingRule: 10 tables: #数据分片规则配置,可配置多个logic_table_name 11 <logic_table_name>: #逻辑表名称 12 actualDataNodes: #由数据源名 + 表名组成,以小数点分隔。多个表以逗号分隔,支持inline表达式。缺省表示使用已知数据源与逻辑表名称生成数据节点,用于广播表(即每个库中都需要一个同样的表用于关联查询,多为字典表)或只分库不分表且所有库的表结构完全一致的情况 13 14 databaseStrategy: #分库策略,缺省表示使用默认分库策略,以下的分片策略只能选其一 15 standard: #用于单分片键的标准分片场景 16 shardingColumn: #分片列名称 17 preciseAlgorithmClassName: #精确分片算法类名称,用于=IN。。该类需实现PreciseShardingAlgorithm接口并提供无参数的构造器 18 rangeAlgorithmClassName: #范围分片算法类名称,用于BETWEEN,可选。。该类需实现RangeShardingAlgorithm接口并提供无参数的构造器 19 complex: #用于多分片键的复合分片场景 20 shardingColumns: #分片列名称,多个列以逗号分隔 21 algorithmClassName: #复合分片算法类名称。该类需实现ComplexKeysShardingAlgorithm接口并提供无参数的构造器 22 inline: #行表达式分片策略 23 shardingColumn: #分片列名称 24 algorithmInlineExpression: #分片算法行表达式,需符合groovy语法 25 hint: #Hint分片策略 26 algorithmClassName: #Hint分片算法类名称。该类需实现HintShardingAlgorithm接口并提供无参数的构造器 27 none: #不分片 28 tableStrategy: #分表策略,同分库策略 29 keyGenerator: 30 column: #自增列名称,缺省表示不使用自增主键生成器 31 type: #自增列值生成器类型,缺省表示使用默认自增列值生成器。可使用用户自定义的列值生成器或选择内置类型:SNOWFLAKE/UUID 32 props: #属性配置, 注意:使用SNOWFLAKE算法,需要配置worker.id与max.tolerate.time.difference.milliseconds属性。若使用此算法生成值作分片值,建议配置max.vibration.offset属性 33 <property-name>: 属性名称 34 35 bindingTables: #绑定表规则列表 36 - <logic_table_name1, logic_table_name2, ...> 37 - <logic_table_name3, logic_table_name4, ...> 38 - <logic_table_name_x, logic_table_name_y, ...> 39 broadcastTables: #广播表规则列表 40 - table_name1 41 - table_name2 42 - table_name_x 43 44 defaultDataSourceName: #未配置分片规则的表将通过默认数据源定位 45 defaultDatabaseStrategy: #默认数据库分片策略,同分库策略 46 defaultTableStrategy: #默认表分片策略,同分库策略 47 defaultKeyGenerator: #默认的主键生成算法 如果没有设置,默认为SNOWFLAKE算法 48 type: #默认自增列值生成器类型,缺省将使用org.apache.shardingsphere.core.keygen.generator.impl.SnowflakeKeyGenerator。可使用用户自定义的列值生成器或选择内置类型:SNOWFLAKE/UUID 49 props: 50 <property-name>: #自增列值生成器属性配置, 比如SNOWFLAKE算法的worker.id与max.tolerate.time.difference.milliseconds 51 52 masterSlaveRules: #读写分离规则,详见读写分离部分 53 <data_source_name>: #数据源名称,需要与真实数据源匹配,可配置多个data_source_name 54 masterDataSourceName: #详见读写分离部分 55 slaveDataSourceNames: #详见读写分离部分 56 loadBalanceAlgorithmType: #详见读写分离部分 57 props: #读写分离负载算法的属性配置 58 <property-name>: #属性值 59 60props: #属性配置 61 sql.show: #是否开启SQL显示,默认值: false 62 executor.size: #工作线程数量,默认值: CPU核数 63 max.connections.size.per.query: # 每个查询可以打开的最大连接数量,默认为1 64 check.table.metadata.enabled: #是否在启动时检查分表元数据一致性,默认值: false

读写分离

1dataSources: #省略数据源配置,与数据分片一致 2 3masterSlaveRule: 4 name: #读写分离数据源名称 5 masterDataSourceName: #主库数据源名称 6 slaveDataSourceNames: #从库数据源名称列表 7 - <data_source_name1> 8 - <data_source_name2> 9 - <data_source_name_x> 10 loadBalanceAlgorithmType: #从库负载均衡算法类型,可选值:ROUND_ROBINRANDOM。若`loadBalanceAlgorithmClassName`存在则忽略该配置 11 props: #读写分离负载算法的属性配置 12 <property-name>: #属性值

数据脱敏

1dataSource: #省略数据源配置 2 3encryptRule: 4 encryptors: 5 <encryptor-name>: 6 type: #加解密器类型,可自定义或选择内置类型:MD5/AES 7 props: #属性配置, 注意:使用AES加密器,需要配置AES加密器的KEY属性:aes.key.value 8 aes.key.value: 9 tables: 10 <table-name>: 11 columns: 12 <logic-column-name>: 13 plainColumn: #存储明文的字段 14 cipherColumn: #存储密文的字段 15 assistedQueryColumn: #辅助查询字段,针对ShardingQueryAssistedEncryptor类型的加解密器进行辅助查询 16 encryptor: #加密器名字

治理

1dataSources: #省略数据源配置 2shardingRule: #省略分片规则配置 3masterSlaveRule: #省略读写分离规则配置 4encryptRule: #省略数据脱敏规则配置 5 6orchestration: 7 orchestration_ds: #治理实例名称 8 orchestrationType: #配置/注册中心的类型,例如config_center/registry_center 9 instanceType: #配置/注册中心类型。如:zookeeper 10 serverLists: #连接配置/注册中心服务器的列表。包括IP地址和端口号。多个地址用逗号分隔。如: host1:2181,host2:2181 11 namespace: #配置/注册中心的命名空间 12 props: #其它配置 13 overwrite: #本地配置是否覆盖配置中心配置。如果可覆盖,每次启动都以本地配置为准 14 digest: #连接注册中心的权限令牌。缺省为不需要权限验证 15 operationTimeoutMilliseconds: #操作超时的毫秒数,默认500毫秒 16 maxRetries: #连接失败后的最大重试次数,默认317 retryIntervalMilliseconds: #重试间隔毫秒数,默认500毫秒 18 timeToLiveSeconds: #临时节点存活秒数,默认60

Yaml语法说明

!! 表示实例化该类

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

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

转载:ShardingSphere配置手册

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )