shardingsphere :数据库分库分表

8 篇文章 0 订阅

首先拉jar包

<!--导入分库 shardingsphere-->
<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    <version>4.1.0</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.2</version>
</dependency>


<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.21</version>
</dependency>

docker 拉个mysql,建立二个数据库

docker pull mysql:5.7

docker run --name some-mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /Library/YiCheWork/mysql mysql

docker ps 看看是否启动成功

docker exec -it 356f637a6203 /bin/bash 进入容器

mysql -uroot -p 123456

连上数据库

配置文件:

#定义两个数据源m1,m2
spring.shardingsphere.datasource.names=m1,m2
#配置数据源具体内容,包含连接池,驱动,地址,用户名和密码
#m1数据源配置
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://10.168.14.11:3306/edu_db_1?characterEncoding=utf-8&serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m1.username=root
spring.shardingsphere.datasource.m1.password=123456

#m2数据源配置
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://192.168.200.147:3306/saas_platform?characterEncoding=utf-8&serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m2.username=root
spring.shardingsphere.datasource.m2.password=123456

#指定数据库分布情况,数据库里面表分布情况
# m1 m2 biz_order_1 biz_order_2
spring.shardingsphere.sharding.tables.biz_order.actual-data-nodes=m$->{1..2}.biz_order_$->{1..2}
# 指定 biz_order 表里面主键 order_id 生成策略 SNOWFLAKE(雪花算法)
spring.shardingsphere.sharding.tables.biz_order.key-generator.column=order_id
spring.shardingsphere.sharding.tables.biz_order.key-generator.type=SNOWFLAKE
# 指定数据库分片策略 是偶数添加 m1,是奇数添加 m2
spring.shardingsphere.sharding.tables.biz_order.database-strategy.inline.sharding-column=order_id
spring.shardingsphere.sharding.tables.biz_order.database-strategy.inline.algorithm-expression=m$->{order_id % 2 + 1}
#指定数据表分片策略 按order_user_id进行分表 偶数到表1 奇数到2
spring.shardingsphere.sharding.tables.biz_order.table-strategy.inline.sharding-column=order_user_id
spring.shardingsphere.sharding.tables.biz_order.table-strategy.inline.algorithm-expression=biz_order_$->{order_user_id%2+1}

#订单item
spring.shardingsphere.sharding.tables.biz_order_item.actual-data-nodes=m$->{1..2}.biz_order_item_$->{1..2}
# 指定 biz_order_item 表里面主键 cid 生成策略 SNOWFLAKE
spring.shardingsphere.sharding.tables.biz_order_item.key-generator.column=order_item_id
spring.shardingsphere.sharding.tables.biz_order_item.key-generator.type=SNOWFLAKE
# 指定数据库分片策略 是偶数添加 m1,是奇数添加 m2
spring.shardingsphere.sharding.tables.biz_order_item.database-strategy.inline.sharding-column=order_id
spring.shardingsphere.sharding.tables.biz_order_item.database-strategy.inline.algorithm-expression=m$->{order_id % 2 + 1}
#指定数据表分片策略 按order_user_id进行分表 偶数到表1 奇数到2
spring.shardingsphere.sharding.tables.biz_order_item.table-strategy.inline.sharding-column=order_user_id
spring.shardingsphere.sharding.tables.biz_order_item.table-strategy.inline.algorithm-expression=biz_order_item_$->{order_user_id%2+1}

#设置绑定关系
spring.shardingsphere.sharding.binding-tables=biz_order,biz_order_item

#默认数据源,即未配置分表规则的表数据存储表
spring.shardingsphere.sharding.default-data-source-name=m1

# 打开 sql 输出日志
spring.shardingsphere.props.sql.show=true
# mybatis配置
mybatis-plus.mapper-locations=classpath:mapper/*.xml

写代码测试即可

具体步骤:shardingsphere sharding-jdbc配置和使用教程_程序猿666的博客-CSDN博客_shardingsphere教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值