ShardingSphere分库分表实战之垂直分库
【摘要】 本篇文章主要讲解了ShardingSphere分库分表实战之垂直分库,下节预告,ShardingSphere分库分表实战之水平分表,敬请期待。
🍀 一.ShardingSphere项目实战集群环境准备
关于项目启动需要提前准备并进行配置的环境我在上一篇文章中做了详细的讲解,如果还有问题的同学可以参考上一篇文章进行学习。
🍀 二.SpringBoot项目中垂直分库的配置
sharding-jdbc进行分库分表的配置,主要包括:数据源、分片键、主键生成策略、分片策略等。
注意:项目实战过程中有不熟的概念可以参考对应的官方网站,因为内容较多,本篇文章不做过多详细的说明,包括使用到的很多知识内容,官网开发手册都有更加详细的指导说明。
🥦 2.1 配置文件 - 基本配置
# 应用名称
spring.application.name=sharding-jdbc-demo
# 打印SQL语句
spring.shardingsphere.props.sql-show=true
# SQL输出日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
🥦 2.2 配置文件 - 数据源
# 定义多个数据源
spring.shardingsphere.datasource.names = db1,db2
# 数据源1连接信息配置
spring.shardingsphere.datasource.db1.type = com.zaxxer.hikari.HikariDataSource
spring.shardingsphere.datasource.db1.driver-class-name = com.mysql.jdbc.Driver
spring.shardingsphere.datasource.db1.url = jdbc:mysql://192.168.10.132:3306/ljw_payorder_db?characterEncoding=UTF-8&useSSL=false
spring.shardingsphere.datasource.db1.username = root
spring.shardingsphere.datasource.db1.password = root
# 数据源2连接信息配置
spring.shardingsphere.datasource.db2.type = com.zaxxer.hikari.HikariDataSource
spring.shardingsphere.datasource.db2.driver-class-name = com.mysql.jdbc.Driver
spring.shardingsphere.datasource.db2.url = jdbc:mysql://192.168.10.133:3306/ljw_user_db?characterEncoding=UTF-8&useSSL=false
spring.shardingsphere.datasource.db2.username = root
spring.shardingsphere.datasource.db2.password = root
🥦 2.3 配置文件 - 配置数据节点
# 标准分片表配置 - 配置数据节点
# 由数据源名 + 表名组成,以小数点分隔。多个表以逗号分隔,支持 inline 表达式。
spring.shardingsphere.rules.sharding.tables.pay_order.actual-data-nodes=db1.pay_order
spring.shardingsphere.rules.sharding.tables.users.actual-data-nodes=db2.users
🍀 三.垂直分库测试
🥦 3.1 垂直分库测试
@Autowired(required = false)
private UserMapper userMapper;
@Autowired(required = false)
private PayOrderMapper payOrderMapper;
@Test
public void testUserAndPayOrderInsert(){
User user = new User();
user.setId(1);
user.setUsername("硕风和炜");
user.setPhone("18423382832");
user.setPassword("root");
userMapper.insert(user);
PayOrder payOrder = new PayOrder();
payOrder.setOrder_id(24324238L);
payOrder.setProduct_name("水杯");
payOrder.setUser_id(user.getId());
payOrder.setCount(2);
payOrderMapper.insert(payOrder);
}
🥦 3.2 结果查询
项目运行成功 !
数据库表中数据存储成功 !
数据库表中数据存储成功 !
🍀 四.总结
本篇文章主要讲解了ShardingSphere分库分表实战之垂直分库,下节预告,ShardingSphere分库分表实战之水平分表,敬请期待。
💬 五.共勉
最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉! |
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)