当前位置:网站首页>ShardingSphere之水平分库实战(四)
ShardingSphere之水平分库实战(四)
2022-07-31 00:40:00 【融极】
概述
场景
创建两个数据库
环境搭建
建库、建表

CREATE TABLE `course_1` (
`cid` bigint(20) NOT NULL,
`cname` varchar(50) NOT NULL,
`user_id` bigint(20) NOT NULL,
`cstatus` varchar(10) NOT NULL,
PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
springboot环境搭建
配置分片规则
# 配置分片策略
# 配置数据源
spring.shardingsphere.datasource.names=m1,m2
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
# 指定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}
# 打开sql输出日志
spring.shardingsphere.props.sql.show=true
# 解决一个Course实体类不能对应两张表的问题
spring.main.allow-bean-definition-overriding=true
编写测试代码
@Test
void addFk() {
for (int i = 0; i < 10; i++) {
Course course = new Course();
course.setCname("java");
course.setUserId(101L);
course.setCstatus("normal");
courseMapper.insertSelective(course);
}
}
@Test
public void findCourseDb() {
Example example = new Example(Course.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("userId", 100L);
criteria.andEqualTo("cid", 760185728628948993L);
Course course = courseMapper.selectOneByExample(example);
System.out.println(course);
}
边栏推荐
- asser利用蚁剑登录
- How to Repair Word File Corruption
- mysql主从复制及读写分离脚本-亲测可用
- XSS related knowledge
- 【愚公系列】2022年07月 Go教学课程 017-分支结构之IF
- 【唐宇迪 深度学习-3D点云实战系列】学习笔记
- 正则表达式密码策略与正则回溯机制绕过
- How to install joiplay emulator rtp
- Encapsulate and obtain system user information, roles and permission control
- MySQL database advanced articles
猜你喜欢

【c语言课程设计】C语言校园卡管理系统

小程序-全局数据共享

Shell programming of conditional statements

How to solve the error of joiplay simulator

In-depth understanding of the auto-increment operator from two error-prone written test questions

How to adjust Chinese in joiplay simulator

寄存器(汇编语言)

Error ER_NOT_SUPPORTED_AUTH_MODE Client does not support authentication protocol requested by serv

DOM系列之动画函数封装

Error in go mode tidy go warning “all” matched no packages
随机推荐
不用Swagger,那我用啥?
Restricted character bypass
xss的绕过
web漏洞之需要准备的工作
Common network status codes
(五)fastai应用
xss靶机训练【实现弹窗即成功】
go mode tidy出现报错go warning “all“ matched no packages
Shell编程之条件语句
MySQL database constraints, table design
【深入浅出玩转FPGA学习14----------测试用例设计2】
小程序-全局数据共享
WEB Security Basics - - - Vulnerability Scanner
Preparations for web vulnerabilities
unity2D横版游戏教程4-物品收集以及物理材质
【Multithreading】
SWM32 Series Tutorial 6 - Systick and PWM
[In-depth and easy-to-follow FPGA learning 15---------- Timing analysis basics]
MySQL数据库约束,表的设计
How to solve types joiplay simulator does not support this game