前言
项目中使用sharding-jdbc分库分表,带来一个问题就是,我们查询的时候很不方便,找了一下sharding-proxy可以解决这个问题,
它的主要思路是将多个库的连接做成一个代理连接,再加上我们配置的策略,从而实现分库分表下客户端操作很方便。
本文是基于之前博客sharding-proxy的策略去做的,不明白的可以看之前的博客-----
搭建步骤
下载文件,解压文件
http://mirror.bit.edu.cn/apache/incubator/shardingsphere/4.0.0-RC1/apache-shardingsphere-incubating-4.0.0-RC1-sharding-proxy-bin.tar.gz
tar -zxvf apache-shardingsphere-incubating-4.0.0-RC1-sharding-proxy-bin.tar.gz
修改配置文件,分片
cd apache-shardingsphere-incubating-4.0.0-RC1-sharding-proxy-bin/conf
vim config-sharding.yaml
schemaName: sharding_db # 数据库名字
dataSources:
order_db_1: #数据源别名,多个往下边追加
url: jdbc:mysql://192.168.56.121:33065/order_db_1?useUnicode=true
username: root
password: root
connectionTimeoutMilliseconds: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
shardingRule: #分库分表的规则
tables: # 多个表就往下边追加
t_order: # 逻辑表的名字
actualDataNodes: order_db_1.t_order_$->{1..2} #实际执行的节点
tableStrategy:
inline:
shardingColumn: order_id #分表字段
algorithmExpression: t_order_$->{order_id % 2 + 1} #分表规则
keyGenerator:
type: SNOWFLAKE #分布式主键类型
column: order_id # 分布式主键
bindingTables:
- t_order # 哪些表需要分库分表
defaultDatabaseStrategy:
inline:
shardingColumn: order_id #分库字段
algorithmExpression: order_db_1.t_order_$->{1..2} #分库算法
defaultTableStrategy:
none:
修改 server.yaml
authentication:
username: root
password: root
#props:
acceptor.size: 16 #用于设置接收客户端请求的工作线程个数,默认为CPU核数*2
sql.show: true # 打印sql
安装mysql驱动
cd ../lib
wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.24/mysql-connector-java-5.1.24.jar
启动及查看日志
cd ../bin
./start.sh
tail -f ../logs/stdout.log