首先拉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教程