跳到主要内容

开启分片支持

如果您计划使您的shopTNT系统数据分片,请参考本文档进行相应的配置。

一 、做好分片策略

在开始之前,您应该根据自己的业务情况准备好分片策略,包括:

1、要用几个数据库来分片

2、相应的表要分几张表

在本例,我们假设用2个数据库分片,相应的表分两个表。

二、分片数据源准备

请根据您的业务情况准备供分片的Mysql数据库,如准备好两台mysql供分片使用:

IP端口密码数据库
192.168.1.1003306root/123456shopTNT0
192.168.1.1013306root/123456shopTNT1

在这里我们指定shopTNT0、shopTNT1两台mysql数据库。

三、安装表结构

1、分别shopTNT0、shopTNT1两台mysql数据库中安装所有的数据表。

执行脚本:

我们分表的sql脚本在如下目录:

deploy/src/main/resources/scheme/standard/default_database.sql

注:

分别在shopTNT0、shopTNT1数据库中执行default_database.sql脚本进。行创建新的数据表。 deploy是指shopTNT工程中的deploy工程目录

2、在数据源中安装要分表的sql吧

执行脚本:

我们分表的sql脚本在如下目录:

deploy/src/main/resources/scheme/standard/shard.sql

分别在shopTNT0、shopTNT1数据库中执行shard.sql脚本进。行创建新的数据表。

这里面的表个数是要根据您的分片策略做出相应的改变,我们拿订单表要分2个表举例,应该修改脚本为:

CREATE TABLE `es_order0` (
`order_id` bigint(20) NOT NULL COMMENT '主键ID',
`trade_sn` varchar(20) DEFAULT NULL COMMENT '交易编号',
其他字段略
)
CREATE TABLE `es_order1` (
`order_id` bigint(20) NOT NULL COMMENT '主键ID',
`trade_sn` varchar(20) DEFAULT NULL COMMENT '交易编号',
其他字段略
)

四、配置分片策略

修改配置中心的yml文件,以上述的分片策略为例:

1、定义数据源的分片

修改application.yaml:

spring:
profiles:
#需要包含的分片策略模块
include: goods,order,member
#sharding分库分表配置
shardingsphere:
#配置sql是否显示输出,调试用,生产环境需关闭
props:
sql:
show: true
sharding:
#定义默认数据源为:ds0
default-data-source-name: ds0
#定义分库的数据源,这里定义了两个数据源
datasource:
#这里配置所有数据源的名字
names: ds0,ds1
ds0:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.2.208:3306/shopTNT01?useUnicode=true&characterEncoding=utf8&autoReconnect=true
username: root
password: 123456
ds1:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.2.208:3306/shopTNT02?useUnicode=true&characterEncoding=utf8&autoReconnect=true
username: root
password: 123456

2、定义表分片策略

定义订单相关策略,修改application-order.yml:

spring:
#分库分表配置
shardingsphere:
sharding:
tables:
#订单表(用ordersn分库,用member_id分表)
es_order:
actual-data-nodes: ds$->{0..1}.es_order$->{0..2}
database-strategy:
inline:
sharding-column: sn
algorithm-expression: ds$->{ new Long(sn) % 2}
table-strategy:
inline:
sharding-column: member_id
algorithm-expression: es_order$->{member_id % 3}

其他模块分片策略配置文件对照表:

模块文件
订单application-order.yml
商品application-goods.yml
会员application-member.yml

五、总结

​ 以上是分2个库,订单分2个表为例的相关配置,请根据您的实际情况调整其他模块的分片策略(我们的配置文件默认不进行分库分表)。