Linux 使用二进制包安装 ShardingSphere-Proxy

大纲

前言

本文将介绍 Linux 如何使用二进制包安装 ShardingSphere-Proxy,适用于 CentOS/Debian/Ubuntu 等 Linux 发行版系统。

安装方式

目前 ShardingSphere-Proxy 官方提供了三种安装方式:

  • Docker
  • Helm(K8s)
  • 二进制发布包

安装步骤

平台兼容说明

ShardingSphere-Proxy 的二进制包既可以在 Linux 系统运行,又可以在 Windows 系统运行。

step1:下载二进制包

1
2
3
4
5
6
7
8
9
10
11
# 下载 ShardingSphere-Proxy 二进制包
wget https://archive.apache.org/dist/shardingsphere/5.1.1/apache-shardingsphere-5.1.1-shardingsphere-proxy-bin.tar.gz

# 解压 ShardingSphere-Proxy 二进制包
tar -zxvf apache-shardingsphere-5.1.1-shardingsphere-proxy-bin.tar.gz

# 重命名 ShardingSphere-Proxy 二进制包的解压目录
mv apache-shardingsphere-5.1.1-shardingsphere-proxy-bin shardingsphere-proxy-5.1.1

# 进入 ShardingSphere-Proxy 二进制包的解压目录
cd shardingsphere-proxy-5.1.1

step2:添加 MySQL 驱动包

1
2
3
4
5
# 创建 ShardingSphere-Proxy 的 ext-lib 目录
mkdir -p ext-lib

# 下载 MySQL 驱动到 ShardingSphere-Proxy 的解压目录
wget -P ext-lib https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.22/mysql-connector-java-8.0.22.jar

spte3:修改 ShardingSphere-Proxy 配置文件

1
2
# 编辑 ShardingSphere-Proxy 的服务器配置文件,更改以下配置内容
vim conf/server.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
rules:
# 权限与认证规则
- !AUTHORITY
users:
# 定义 ShardingSphere-Proxy 登录用户
# 格式:用户名@允许访问的主机:密码
- root@%:root
provider:
# 权限提供者类型
# ALL_PRIVILEGES_PERMITTED 表示不做权限校验,拥有所有权限(开发/测试常用)
type: ALL_PRIVILEGES_PERMITTED

props:
# 是否在日志中打印逻辑 SQL 和实际执行 SQL
# true:开启(便于调试)
# false:关闭(生产环境建议关闭)
sql-show: true

配置文件说明

  • ShardingSphere-Proxy 有两种类型的配置文件,包括:
  • server.yaml:ShardingSphere-Proxy 的服务器配置,用于配置注册中心、认证信息以及公用属性等。
  • config-xxx.yaml:ShardingSphere-Proxy 的分配规则配置,必须以 config- 作为配置文件的前缀命名。

spte4:启动 ShardingSphere-Proxy

  • 启动 ShardingSphere-Proxy
1
2
3
4
5
# 启动 ShardingSphere-Proxy
bin/start.sh

# 或者启动 ShardingSphere-Proxy 时,指定端口号和配置文件目录
bin/start.bat ${proxy_port} ${proxy_conf_directory}
  • 关闭 ShardingSphere-Proxy(可选)
1
2
# 关闭 ShardingSphere-Proxy
bin/stop.sh

step5:远程连接 ShardingSphere-Proxy

1
mysql -h192.168.2.191 -P3307 -uroot -p

step6:测试访问 ShardingSphere-Proxy

1
show databases;

  • ShardingSphere-Proxy 在启动时就内置了 MySQL 系统 Schema 元数据(包含以下四个库):
Schema 作用
information_schemaSQL 元数据查询
performance_schema兼容性能相关 SQL
sysMySQL 系统视图
mysql用户 / 权限 / 系统表
  • 即使 ShardingSphere-Proxy 未配置任何真实 MySQL 数据源,通过 show databases; 仍然会看到 information_schemaperformance_schemasysmysql 这 4 个库,是因为它们是 ShardingSphere-Proxy 内置的虚拟系统库。这些库的存在仅用于兼容 MySQL 协议和客户端行为,并不表示 ShardingSphere-Proxy 已经连接了真实的 MySQL 实例。
  • MySQL 客户端、JDBC 驱动以及 ORM 框架在连接 MySQL 后,都会自动执行如 show databases;select database();select @@sql_mode;select * from information_schema.tables; 相关查询。如果这些系统库不存在或返回异常,客户端和驱动将无法正常工作,导致 JDBC 报错、ORM 启动失败、交互体验极差。
  • 因此,ShardingSphere-Proxy 必须在启动时提供这些虚拟系统库来保证对 MySQL 生态的透明兼容;ShardingSphere-Proxy 只有在配置了数据源并定义了逻辑库(Schema)之后,才会在 show databases 中看到真正的业务库。

注意事项

  • ShardingSphere-Proxy 使用 conf/server.yaml 配置注册中心、认证信息以及公用属性等。
  • ShardingSphere-Proxy 支持多逻辑数据源,每个以 config- 前缀命名的 YAML 配置文件(比如 config-xxx.yaml),即为一个逻辑数据源。
  • ShardingSphere-Proxy 默认使用 3307 端口,可以通过启动脚本追加参数作为启动端口号,比如:bin/start.sh 3308
  • ShardingSphere-Proxy 默认集成了 ZooKeeper Curator 客户端,生产环境中必须配置并使用 ZooKeeper(或 Etcd)来持久化 ShardingSphere-Proxy 的元数据,即生产环境必须使用集群模式(Cluster Mode)
  • ShardingSphere-Proxy 默认以内存模式(Memory Mode)启动。在该模式下,初始化配置或执行 SQL 导致的元数据变更只在当前进程内生效,不会持久化到磁盘或注册中心,适合开发、调试和功能测试,无需手动清理运行痕迹。