当前位置:网站首页>ShardingSphere之未分片表配置实战(六)
ShardingSphere之未分片表配置实战(六)
2022-07-31 00:40:00 【融极】
概述
场景
在实际工作中,有些表需要参与分片操作,有些表则无需分片,那么这种场景下,sharding-jdbc该如何配置呢?
SpringBoot环境搭建
application.properties配置
涉及未分配表的配置如下,只需要指定default-data-source-name即可。
# 默认数据库,不分片的表都在这里
spring.shardingsphere.datasource.mx.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.mx.driver-class-name=com.mysql.cj.jdbc.Driver
# course_db数据库无需单独建立,也可以是和其他的分片数据库相同,比如可以是edu_db_1
spring.shardingsphere.datasource.mx.url=jdbc:mysql://localhost:3306/course_db?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.mx.username=root
spring.shardingsphere.datasource.mx.password=123456
# 默认数据源,未分片的表默认执行库
spring.shardingsphere.sharding.default-data-source-name=mx
全量配置如下
# 配置分片策略
# 配置数据源
spring.shardingsphere.datasource.names=m0,m1,m2,mx
# 默认数据库,不分片的表都在这里
spring.shardingsphere.datasource.mx.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.mx.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.mx.url=jdbc:mysql://localhost:3306/course_db?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.mx.username=root
spring.shardingsphere.datasource.mx.password=123456
spring.shardingsphere.datasource.m1.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m1.url=jdbc:mysql://localhost:3306/edu_db_1?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m1.username=root
spring.shardingsphere.datasource.m1.password=123456
spring.shardingsphere.datasource.m2.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m2.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m2.url=jdbc:mysql://localhost:3306/edu_db_2?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m2.username=root
spring.shardingsphere.datasource.m2.password=123456
spring.shardingsphere.datasource.m0.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m0.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m0.url=jdbc:mysql://localhost:3306/user_db?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m0.username=root
spring.shardingsphere.datasource.m0.password=123456
# 默认数据源,未分片的表默认执行库
spring.shardingsphere.sharding.default-data-source-name=mx
# 指定course表分布情况,配置表在哪个数据库中,表名称都是什么
spring.shardingsphere.sharding.tables.course.actual-data-nodes=m$->{1..2}.course_$->{1..2}
# 指定course主键cid生成策略SNOWFLAKE
spring.shardingsphere.sharding.tables.course.key-generator.column=cid
spring.shardingsphere.sharding.tables.course.key-generator.type=SNOWFLAKE
# 指定表分片策略, cid是偶数添加到course_1表中,cid是奇数添加到course_2
spring.shardingsphere.sharding.tables.course.table-strategy.inline.sharding-column=cid
spring.shardingsphere.sharding.tables.course.table-strategy.inline.algorithm-expression=course_$->{cid % 2 + 1}
# 指定库的中course表的分片策略
spring.shardingsphere.sharding.tables.course.database-strategy.inline.sharding-column=user_id
spring.shardingsphere.sharding.tables.course.database-strategy.inline.algorithm-expression=m$->{user_id % 2 + 1}
# 指定t_user表分布情况,配置表在哪个数据库中,表名称都是什么
spring.shardingsphere.sharding.tables.t_user.actual-data-nodes=m0.t_user
# 指定t_user主键user_id生成策略SNOWFLAKE
spring.shardingsphere.sharding.tables.t_user.key-generator.column=user_id
spring.shardingsphere.sharding.tables.t_user.key-generator.type=SNOWFLAKE
# 指定表分片策略
spring.shardingsphere.sharding.tables.t_user.table-strategy.inline.sharding-column=user_id
spring.shardingsphere.sharding.tables.t_user.table-strategy.inline.algorithm-expression=t_user
# 打开sql输出日志
spring.shardingsphere.props.sql.show=true
# 解决一个Course实体类不能对应两张表的问题
spring.main.allow-bean-definition-overriding=true
表结构
CREATE TABLE `t_study` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`course_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
测试代码
package com.study.shardingjdbcdemo.entity;
import lombok.Data;
import javax.persistence.Id;
import javax.persistence.Table;
@Data
@Table(name = "t_study")
public class Study {
@Id
private Long id;
private String name;
private String courseName;
}
package com.study.shardingjdbcdemo.mapper;
import com.study.shardingjdbcdemo.entity.Study;
import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper;
@Repository
public interface StudyMapper extends Mapper<Study> {
}
@Test
public void defaultDb() {
Study study = new Study();
study.setName("xm");
study.setCourseName("mysql");
studyMapper.insert(study);
}
参考
边栏推荐
- MySQL的触发器
- A complete guide to avoiding pitfalls for the time-date type "yyyy-MM-dd HHmmss" in ES
- WEB Security Basics - - - Vulnerability Scanner
- MySQL数据库的truncate与delete区别
- Xss target drone training [success when pop-up window is realized]
- 消息队列存储消息数据的MySQL表设计
- [Tang Yudi Deep Learning-3D Point Cloud Combat Series] Study Notes
- xss绕过:prompt(1)
- 【愚公系列】2022年07月 Go教学课程 015-运算符之赋值运算符和关系运算符
- h264和h265解码上的区别
猜你喜欢
【唐宇迪 深度学习-3D点云实战系列】学习笔记
消息队列存储消息数据的MySQL表设计
[In-depth and easy-to-follow FPGA learning 14----------Test case design 2]
C语言力扣第48题之旋转图像。辅助数组
【深入浅出玩转FPGA学习15----------时序分析基础】
MySQL database advanced articles
限制字符绕过
【深入浅出玩转FPGA学习14----------测试用例设计2】
Detailed explanation of 9 common reasons for MySQL index failure
Mysql systemized JOIN operation example analysis
随机推荐
【Yugong Series】July 2022 Go Teaching Course 013-Constants, Pointers
解决:Parameter 0 of method ribbonServerList in com.alibaba.cloud.nacos.ribbon.NacosRibbonClientConfigu
MySQL筑基篇之增删改查
Mini Program - Global Data Sharing
Jmeter parameter transfer method (token transfer, interface association, etc.)
What is Promise?What is the principle of Promise?How to use Promises?
Regular expression password policy and regular backtracking mechanism bypass
DNS解析过程【访问网站】
MySQL notes under
【愚公系列】2022年07月 Go教学课程 016-运算符之逻辑运算符和其他运算符
DOM系列之scroll系列
Jetpack Compose learning (8) - State and remeber
Go study notes (84) - Go project directory structure
Adding, deleting, modifying and checking the foundation of MySQL
How to Add a Navigation Menu on Your WordPress Site
Go 学习笔记(84)— Go 项目目录结构
MySQL triggers
C language force buckles the rotating image of the 48th question.auxiliary array
A complete guide to avoiding pitfalls for the time-date type "yyyy-MM-dd HHmmss" in ES
Understand from the 11 common examples of judging equality of packaging types in the written test: packaging types, the principle of automatic boxing and unboxing, the timing of boxing and unboxing, a