当前位置:网站首页>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);
}
边栏推荐
- software development design process
- pytorch双线性插值
- Jmeter parameter transfer method (token transfer, interface association, etc.)
- Error ER_NOT_SUPPORTED_AUTH_MODE Client does not support authentication protocol requested by serv
- mysql主从复制及读写分离脚本-亲测可用
- Consistency and Consensus of Distributed Systems (1) - Overview
- WMware Tools安装失败segmentation fault解决方法
- 【c语言课程设计】C语言校园卡管理系统
- 消息队列存储消息数据的MySQL表设计
- [In-depth and easy-to-follow FPGA learning 14----------Test case design 2]
猜你喜欢

WMware Tools安装失败segmentation fault解决方法

WMware Tools installation failed segmentation fault solution

Oracle一个诡异的临时表空间不足的问题

go mode tidy出现报错go warning “all“ matched no packages
![[C language course design] C language campus card management system](/img/36/9e1a97767bbe1e504d8a3cc3ce5448.png)
[C language course design] C language campus card management system

DOM系列之动画函数封装

web漏洞之需要准备的工作

Detailed explanation of 9 common reasons for MySQL index failure

xss靶机训练【实现弹窗即成功】

数据库的严格模式
随机推荐
场景之多数据源查询及数据下载问题
论文理解:“Designing and training of a dual CNN for image denoising“
ELK部署脚本---亲测可用
【愚公系列】2022年07月 Go教学课程 017-分支结构之IF
【愚公系列】2022年07月 Go教学课程 015-运算符之赋值运算符和关系运算符
程序员工作三年攒多少钱合适?
C language force buckles the rotating image of the 48th question.auxiliary array
How to adjust Chinese in joiplay simulator
mysql主从复制及读写分离脚本-亲测可用
Shell programming of conditional statements
MySql数据恢复方法个人总结
The difference between truncate and delete in MySQL database
DNS解析过程【访问网站】
The difference between substring and substr in MySQL
【Yugong Series】July 2022 Go Teaching Course 019-For Circular Structure
埃拉托斯特尼筛法
asser利用蚁剑登录
background对float的子元素无效
MySQL数据库进阶篇
xss bypass: prompt(1)