Shardingsphere-Proxy 5.5.0部署
- Shardingsphere系列目录:
- 背景
- 下载安装包
- Linux解压安装包
- 修改配置文件
- global.yaml
- database-sharding.yaml
- 引入数据库驱动
- 启动代理
- 连接代理数据库
- Navicate工具连接
- MYSQL客户端连接
Shardingsphere系列目录:
【Springboot 集成 Shardingsphere-JDBC】
【Shardingsphere-Proxy 5.5.0部署】
背景
继上一篇【Springboot 集成 Shardingsphere-JDBC】 实现了真实的分库分表,但是我们每次线下查数据的时候不能一个一个表挨个查询吧?这样就需要一个代理数据库将分片数据库和表的数据汇聚起来,就用到了Shardingsphere-Proxy。
下载安装包
进入shardingsphere官网:
https://shardingsphere.apache.org/
Linux解压安装包
使用指令
tar -zxvf apache-shardingsphere-5.5.0-shardingsphere-proxy-bin.tar.gz
安装包解压后目录:
修改配置文件
进入config目录,修改两个配置文件
global.yaml
authority:users:- user: 该数据库代理登录用户名password: 该数据库代理登录密码privilege:type: ALL_PERMITTED
props:# 带路数据库端口号,默认3307proxy-default-port: 3307
database-sharding.yaml
databaseName: 代理数据库名
dataSources:db0:url: jdbc:mysql://localhost:3306/tss_db?allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&autoReconnect=true&useSSL=false&maxReconnects=666&failOverReadOnly=false&initialTimeout=10&zeroDateTimeBehavior=convertToNull&allowMultiQueries=trueusername: rootpassword: 1234db1:url: jdbc:mysql://localhost:3306/tss_db_2?allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&autoReconnect=true&useSSL=false&maxReconnects=666&failOverReadOnly=false&initialTimeout=10&zeroDateTimeBehavior=convertToNull&allowMultiQueries=trueusername: rootpassword: 1234
rules:
- !SHARDINGtables:tss_table:actualDataNodes: db$->{0..1}.tss_table_$->{1..31}tss_tenant_table:actualDataNodes: db$->{0..1}.tss_tenant_table_$->{1..31}
注意:该yaml中的【databaseName】
参数是必须的,并且内容不能是【shardingsphere】
,因为这个【shardingsphere】数据库在这个代理创建的时候就已经有了。
引入数据库驱动
将数据库驱动放到lib目录下,我放的版本是【mysql-connector-java-8.0.23.jar】。
注意:
1. 官网说放到ext-lib目录下,这个我试过,放到lib和ext-lib都可以使用,看个人喜好吧。
2. 这个驱动最好放新版本的,不要放太老的,可能会出问题。
启动代理
进入【bin】目录,执行指令:
./start.sh
截图红框中的路径就是日志文件所在路径,可以通过以下指令查看日志:
cat /opt/middle/shardingsphere_proxy/apache-shardingsphere-5.5.0-shardingsphere-proxy-bin/logs/stdout.log
连接代理数据库
Navicate工具连接
MYSQL客户端连接
执行指令:
mysql -h${proxy_host} -P${proxy_port} -u${proxy_username} -p${proxy_password}