当前位置: 首页 > news >正文

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_PERMITTED

2. conf/config‑sharding.yaml

示例:水平分表,逻辑表t_order,分2张表t_order_0t_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

生产实际最低建议

  1. MySQL 5 系列:最低推荐 5.7.22
    5.6及以下很多系统变量、binlog行为会踩坑,不建议上生产。
  2. MySQL 8 系列:最低推荐 8.0.18+,推荐8.0.30‑8.0.36
    8.0早期小版本认证插件、系统变量容易出兼容报错。

MySQL8.4(LTS)可以跑,但官方文档尚未完全更新,属于社区实践可用,不做正式官宣支持。

重要配套:JDBC驱动(放在ext‑lib

后端MySQL版本Proxy使用驱动
MySQL5.7mysql‑connector‑java‑5.1.49.jar
MySQL8.0mysql‑connector‑j‑8.0.32.jar(不要8.1+,有bug)

驱动版本必须和后端数据库匹配,驱动放错是最多的报错来源。

关键坑点

  1. 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
  1. 不要一个Proxy实例同时对接MySQL5.7 + MySQL8.0,协议版本会冲突;不同大版本MySQL要部署多套Proxy实例。
  2. 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+
http://www.jsqmd.com/news/1358054/

相关文章:

  • Ralph Loop:解决AI编程助手半途而废,实现自动化持续追问的VSCode插件
  • 从运营工程视角拆解直播电商新规落地
  • 管乐合奏中长号声部融合与对抗的艺术:以《Colors》为例的实践指南
  • Windows系统管理全攻略:从架构解析到实战优化
  • 解决dlib安装失败:ERROR: Failed building wheel for dlib
  • Model I/O进阶
  • 如何免费批量导出Notion页面为PDF?终极解决方案指南
  • 找大田作物专用桶混助剂厂家 - 中媒介
  • Java Lambda表达式详解:语法、应用与性能优化
  • Python 中的多态,不止是“重写”——聊聊鸭子类型与动态协议
  • 二层网络环路与广播风暴:从原理到排查与STP防护详解
  • 化工腐蚀性液体灌装机定制 - 中媒介
  • hermes使用OpenCode Go订阅模型慢?本地curl_cffi代理一招搞定
  • AI赋能测试:Test-Master Skills如何重塑测试工程师的工作流
  • Java+微信小程序实现智能会议室管理系统
  • 从零上手Claude Code:Node.js环境配置、API Key获取与核心使用指南
  • 游戏专用调度器:基于eBPF和Rust的低延迟优化实践
  • 2026AI检索变局:为什么传统营销失效?GEO生成式优化落地逻辑与避坑指南
  • 想租赁临时办公用的数码设备 - 中媒介
  • Java异常处理机制:从原理到最佳实践
  • Vibe Coding:提升开发效率与愉悦感的双轨实践指南
  • PYTHON+AI LLM DAY ONE HUNDRED AND THIRTY-ONE
  • Goldberg Steam Emulator技术深度解析:构建无需Steam的局域网游戏环境实战指南
  • 日本求职SPI测试全解析:从适应性测评原理到高效备考策略
  • 机房加湿设备哪家效果好? - 中媒介
  • Kimi K3大模型技术解析:从核心能力到本地部署与API集成实践
  • word怎么压缩到10M以下?PDF与文档压缩工具盘点,覆盖图片瘦身、格式转换与在线轻量处理
  • 终极农历公历转换指南:3步掌握传统文化数字化开发
  • 健身器材整体采购哪家推荐? - 中媒介
  • 高校班级管理系统全栈开发:微信小程序+Spring Boot实战