Docker部署 ShardingSphere‑Proxy 5.4.1
文章目录
- 一、Docker部署 ShardingSphere‑Proxy 5.4.1 极简配置示例
- (1)docker run 启动命令
- (2)docker‑compose.yml 版本(推荐)
- (3)简单配置
- 1. conf/server.yaml
- 2. conf/config‑sharding.yaml
- (4)连接测试
- (5)额外:开启读写分离极简片段(追加到config‑sharding.yaml rules)
- 二、ShardingSphere‑Proxy MySQL后端版本支持
- 官方文档标注支持范围
- 生产实际最低建议
- 重要配套:JDBC驱动(放在`ext‑lib`)
- 关键坑点
- 老版本补充
- 小结
一、Docker部署 ShardingSphere‑Proxy 5.4.1 极简配置示例
镜像:
apache/shardingsphere-proxy:5.4.1
目录结构(宿主机)
./sharding ├── conf │ ├── server.properties # proxy服务配置 │ └── config-sharding.yaml # 分片逻辑配置 └── ext‑lib # 放mysql驱动jar包⚠️驱动下载:
MySQL8.0后端放入:mysql-connector-j-8.0.32.jar
MySQL5.7后端放入:mysql-connector-java-5.1.49.jar
驱动必须放到宿主机./proxy/ext‑lib,挂载进容器。
(1)docker run 启动命令
在开始之前,我们先不要配置,运行一个空的shardingsphere,目的是把最基本的配置先copy到我们对应的目录里
dockerrun-d--namesharding-test apache/shardingsphere-proxy:5.4.1#运行完成后看内容dockerinspect sharding-test
我们看到在容器内的路径于是我们进去看
dockerexec-itsharding-testbashcd/opt/shardingsphere-proxy llcdconf ll看到默认的文件:
# 把文件copy到我们的home中dockercpsharding-test:/opt/shardingsphere-proxy/conf/server.yaml /home/sharding/conf有了上面这个server.yaml后,我们下面正式应用的就能跑了。
dockerrun-d\--namesharding-proxy\-p3307:3307\-v/home/sharding/conf:/opt/shardingsphere-proxy/conf\-v/home/sharding/ext-lib:/opt/shardingsphere-proxy/ext-lib\apache/shardingsphere-proxy:5.4.1(2)docker‑compose.yml 版本(推荐)
version:'3.8'services:sharding-proxy:image:apache/shardingsphere-proxy:5.4.1container_name:sharding-proxyports:-"3307:3307"volumes:-./proxy/conf:/opt/shardingsphere-proxy/conf-./proxy/ext-lib:/opt/shardingsphere-proxy/ext-librestart:unless-stopped(3)简单配置
1. conf/server.yaml
把下面这些#去掉,打开就可以了。
authority:users:-user:root@%password:123456-user:shardingpassword:shardingprivilege:type:ALL_PERMITTED2. conf/config‑sharding.yaml
示例:水平分表,逻辑表
t_order,分2张表t_order_0、t_order_1;后端是一台MySQL,database:ds_0
databaseName:sharding_dbdataSources:ds_0:url:jdbc:mysql://192.168.1.100:3306/ds_0?useSSL=false&serverTimezone=Asia/Shanghaiusername:rootpassword:"Db@123456"connectionTimeoutMilliseconds:30000idleTimeoutMilliseconds:60000maxLifetimeMilliseconds:1800000maxPoolSize:50rules:-!SHARDINGtables:t_order:actualDataNodes:ds_0.t_order_${0..1}tableStrategy:standard:shardingColumn:user_idshardingAlgorithmName:t_order_modshardingAlgorithms:t_order_mod:type:MODprops:sharding-count:2说明:
databaseName: sharding_db:客户端连接proxy之后要use这个库- actualDataNodes:
数据源.物理表名 - MOD算法:
user_id % 2,落到0、1表。
(4)连接测试
# 像普通mysql一样连接proxymysql-h127.0.0.1-P3307-uroot-p123456mysql>use sharding_db;mysql>show tables;(5)额外:开启读写分离极简片段(追加到config‑sharding.yaml rules)
-!READWRITE_SPLITTINGdataSources:ds_0:writeDataSourceName:ds_0_writereadDataSourceNames:-ds_0_read二、ShardingSphere‑Proxy MySQL后端版本支持
当前主流稳定版:5.4.x / 5.5.x
官方文档标注支持范围
- 后端MySQL服务:最低 MySQL 5.1.15,上限 5.7.x、8.0.x
⚠️ MySQL5.1/5.5 属于理论支持,生产不建议用;社区大量生产案例是MySQL5.7.22+、MySQL8.0.x。
生产实际最低建议
- MySQL 5 系列:最低推荐 5.7.22
5.6及以下很多系统变量、binlog行为会踩坑,不建议上生产。 - MySQL 8 系列:最低推荐 8.0.18+,推荐8.0.30‑8.0.36
8.0早期小版本认证插件、系统变量容易出兼容报错。
MySQL8.4(LTS)可以跑,但官方文档尚未完全更新,属于社区实践可用,不做正式官宣支持。
重要配套:JDBC驱动(放在ext‑lib)
| 后端MySQL版本 | Proxy使用驱动 |
|---|---|
| MySQL5.7 | mysql‑connector‑java‑5.1.49.jar |
| MySQL8.0 | mysql‑connector‑j‑8.0.32.jar(不要8.1+,有bug) |
驱动版本必须和后端数据库匹配,驱动放错是最多的报错来源。
关键坑点
- Proxy有个参数
proxy‑mysql‑default‑version,默认值5.7.22;后端是MySQL8.0时要改成对应8.0版本,否则会查询已废弃的query_cache_size变量,报连接异常。
# conf/server.properties proxy-mysql-default-version=8.0.28- 不要一个Proxy实例同时对接MySQL5.7 + MySQL8.0,协议版本会冲突;不同大版本MySQL要部署多套Proxy实例。
- 5.1/5.5仅适合测试验证,分片、迁移、元数据模块很多兼容问题。
老版本补充
- ShardingSphere 4.x(已停止维护):最低MySQL5.5,只建议5.7;不支持完整MySQL8。
新项目直接用5.4.1/5.5.0,不要使用4.x。
小结
- 理论最低:MySQL 5.1.15
- 测试可用底线:MySQL5.7
- 生产推荐底线:MySQL5.7.22 / MySQL8.0.18+
