三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Docker部署 ShardingSphere‑Proxy 5.4.1

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+
← 返回列表