# springboot-shardingsphere-demo **Repository Path**: zwh_9527/springboot-shardingsphere-demo ## Basic Information - **Project Name**: springboot-shardingsphere-demo - **Description**: 编写的sharding jdbc主从独写分离,表分片, 分库分表配置示例 sharding jbc 4.1.1版本和sharding jdbc 5.2.1版本 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-05-18 - **Last Updated**: 2023-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: 分库分表, Java ## README # springboot-shardingsphere-demo ## springboot-sharding5模块 使用maven依赖 ``` org.apache.shardingsphere shardingsphere-jdbc-core-spring-boot-starter 5.2.1 ``` 配置文件的配置参数基本上相同。 详细的配置文件解释信息可以查看: [application-remark.yml文件](https://gitee.com/zwh_9527/springboot-shardingsphere-demo/blob/master/springboot-shardingjdbc5/src/main/resources/config/application-remark.yml) ## springboot-sharding4模块 基于sharding-jdbc-spring-boot-starter 4.1.1 maven依赖编写测试代码 ``` org.apache.shardingsphere sharding-jdbc-spring-boot-starter 4.1.1 ``` #### Description 基于sharding-jdbc-spring-boot-starter 4.1.1依赖编写的sharding jdbc主从独写分离,表分片, 分库分表配置示例 1. application-test1.yml 配置文件--》 单表的分库分表配置 2. application-test2.yml --》实现主从读写分离下的表分片配置 3. application-test3.yml --》读写分离配置 ### application-test1.yml文件说明 ``` actual-data-nodes: xxljob$->{(0..1).collect{t->t.toString().padLeft(2,'0')}}.xxl_job_user$->{(0..1).collect{t ->t.toString().padLeft(2,'0')} } ``` 上面的配置,使用的是 inline行表达式 使用Groovy的Inline表达式进行处理 会生成的结果为 ``` xxljob00 数据源名称(要对应到数据源名称datasourceName,spring.shardingsphere.datasource..url) xxl_job_user00 分片表名称(数据源下要有这个表名,不然启动会报错) xxl_job_user01 xxljob01 数据源名称 xxl_job_user00 分片表名称 xxl_job_user01 ``` 参考链接: http://www.noobyard.com/article/p-bkoscwth-a.html ### 主从读写分离下注意事项 如果数据源名称被主从的配置规则使用掉了,则这个数据源名称就不能被其他地方使用 例如: spring.shardingsphere.datasource.names: xxljob0,xxljob1 ``` # 配置分片规则 sharding: # 配置 (主从数据库)读写分离规则, master-slave-rules: # 配置主从名称,可以任意取名字 xxl_job_ms_rule: # 配置主库master,负责数据的写入 master-data-source-name: xxljob0 # 配置从库slave节点,多个从节点以逗号分隔 slave-data-source-names: xxljob0,xxljob1 tables: xxl_job_user: #语法规则:由:数据源名.表名 组成 # 由数据源名 + 表名组成,以小数点分隔。多个表以逗号分隔, # 支持 inline 表达式。缺省表示使用已知数据源与逻辑表名称生成数据节点, # 用于广播表(即每个库中都需要一个同样的表用于关联查询,多为字典表)或只分库不分表且所有库的表结构完全一致的情况 actual-data-nodes: xxljob0.xxl_job_user$->{(0..1).collect{t ->t.toString().padLeft(2,'0')} } ``` xxljob0数据源被主从读写分离规则使用掉了, 在表分片规则中又被使用,会导致启动报错。