开启分片支持
如果您计划使您的Javashop系统数据分片,请参考本文档进行相应的配置。
一、做好分片策略
在开始之前,您应该根据自己的业务情况准备好分片策略,包括:
1、要用几个数据库来分片
2、相应的表要分几张表
在本例,我们假设用2个数据库分片,相应的表分两个表。
二、分片数据源准备
请根据您的业务情况准备供分片的Mysql数据库,如准备好两台mysql供分片使用:
在这里我们指定javashop0、javashop1两台mysql数据库。
三、安装表结构
1、分别javashop0、javashop1两台mysql数据库中安装所有的数据表。
执行脚本:
我们分表的sql脚本在如下目录:
deploy/src/main/resources/scheme/standard/default_database.sql
注:
分别在javashop0、javashop1数据库中执行default_database.sql脚本进。行创建新的数据表。deploy是指javashop工程中的deploy工程目录
2、在数据源中安装要分表的sql吧
执行脚本:
我们分表的sql脚本在如下目录:
deploy/src/main/resources/scheme/standard/shard.sql
分别在javashop0、javashop1数据库中执行shard.sql脚本进。行创建新的数据表。
这里面的表个数是要根据您的分片策略做出相应的改变,我们拿订单表要分2个表举例,应该修改脚本为:
CREATETABLE`es_order0`(
`order_id`bigint(20)NOTNULLCOMMENT'主键ID',
`trade_sn`varchar(20)DEFAULTNULLCOMMENT'交易编号',
其他字段略
)
CREATETABLE`es_order1`(
`order_id`bigint(20)NOTNULLCOMMENT'主键ID',
`trade_sn`varchar(20)DEFAULTNULLCOMMENT'交易编号',
其他字段略
)
四、配置分片策略
修改配置中心的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/javashop01?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/javashop02?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$->{newLong(sn)%2}
table-strategy:
inline:
sharding-column:member_id
algorithm-expression:es_order$->{member_id%3}
其他模块分片策略配置文件对照表:
五、总结
以上是分2个库,订单分2个表为例的相关配置,请根据您的实际情况调整其他模块的分片策略(我们的配置文件默认不进行分库分表)。
上述就是关于开启分片支持的内容了,想了解更多详情,可以持续关注易族智汇javashop,有任何问题,欢迎一起探讨。