Shardingsphere-Proxy 5.5.0部署

Shardingsphere系列目录:

【Springboot 集成 Shardingsphere-JDBC】
【Shardingsphere-Proxy 5.5.0部署】
【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:
  # 带路数据库端口号,默认3307
  proxy-default-port: 3307 

database-sharding.yaml

注:建议这里配置的数据库连接ip使用【公网地址】,之前碰到过迁移数据失败问题,查看其他配置实在没问题,将这里修改为用公网地址连接数据库后迁移成功

配置没有单表情况

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=true
    username: root
    password: 1234
  db1:
    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=true
    username: root
    password: 1234
rules:
- !SHARDING
  tables:
    tss_table:
      actualDataNodes: db$->{0..1}.tss_table_$->{1..31}
    # 分片表后缀不是简单数字自增,可以使用英文逗号拼接
    tss_tenant_table:
      actualDataNodes: db$->{0..1}.tss_tenant_table_0${1..9},db$->{0..1}.tss_tenant_table_$->{1..31}

配置有单表的情况

背景

一个工程需要连接三个数据库,一个数据库中放的全是未分片的单表另两个数据库有实现分库的分片表,这种情况需要进行如下配置。

databaseName: 代理数据库名
dataSources:
  db:
    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=true
    username: root
    password: 1234
  db0:
    url: jdbc:mysql://localhost:3306/tss_db1?allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&autoReconnect=true&useSSL=false&maxReconnects=666&failOverReadOnly=false&initialTimeout=10&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
    username: root
    password: 1234
  db1:
    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=true
    username: root
    password: 1234
rules:
- !SHARDING
  tables:
    tss_table:
      actualDataNodes: db$->{0..1}.tss_table_$->{1..31}
	# 分片表后缀不是简单数字自增,可以使用英文逗号拼接
    tss_tenant_table:
      actualDataNodes: db$->{0..1}.tss_tenant_table_0${1..9},db$->{0..1}.tss_tenant_table_$->{1..31}
    # 单表配置
    test_single_table:
      actualDataNodes: db.test_single_table

注意:这个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}

在这里插入图片描述

<think>嗯,用户想要查找ShardingSphere-Proxy 5.5.0的配置方法或文档。首先,我需要回忆一下ShardingSphere的版本发布情况。记得ShardingSphere的官方文档通常会在官网上提供各个版本的详细指南,所以应该建议用户先查看官方文档。不过用户提到的5.5.0版本可能不是最新版,我需要确认是否有对应的文档存档。 根据引用内容,用户之前提到过配置文件的位置在`/opt/shardingsphere/apache-shardingsphere-5.5.1-shardingsphere-proxy-bin/conf`,但用户现在需要的是5.5.0的配置方法。不同版本之间可能存在细微差别,所以最好推荐用户查阅对应版本的官方文档。另外,用户提供的引用[2]提到了ShardingSphere-JDBC和ShardingSphere-Proxy的混合使用,说明用户可能对架构有一定了解,可能需要更详细的配置示例。 接下来,我应该分步骤回答用户的问题。首先,建议访问官方文档,然后说明如何获取历史版本,接着给出基本配置步骤,比如配置服务器属性和分片规则,并提醒注意版本差异。此外,用户可能需要具体的配置文件示例,所以提供一个简单的分库分表配置示例会很有帮助。同时,还要提到启动和验证配置的步骤,确保用户能够实际操作。 另外,用户可能遇到的问题包括版本不兼容或配置错误,需要提醒他们注意日志中的错误信息。最后,生成相关问题,帮助用户深入理解配置过程和相关组件,比如与JDBC的区别、常见配置错误等。</think>### ShardingSphere-Proxy 5.5.0 配置方法 #### 1. 官方文档与版本获取 ShardingSphere-Proxy 5.5.0 的官方文档可通过以下步骤访问: - **访问官网**:进入 [ShardingSphere官网](https://shardingsphere.apache.org/),在“文档”部分选择对应版本(若未直接展示5.5.0,可通过历史版本存档查找)[^2]。 - **GitHub发布页**:在 [GitHub Release页面](https://github.com/apache/shardingsphere/releases) 下载5.5.0版本的二进制包和文档。 #### 2. 配置文件结构 ShardingSphere-Proxy的核心配置文件位于安装目录的`conf`文件夹中,主要包括: - `server.yaml`:全局配置(权限、日志、注册中心等)。 - `config-*.yaml`:数据分片、读写分离等规则配置(例如`config-sharding.yaml`)。 #### 3. 基础配置示例 ##### (1) 配置`server.yaml` ```yaml # 权限配置 authentication: users: root: # 用户名 password: root # 密码 # 注册中心(可选) # registry: # type: ZooKeeper # serverLists: localhost:2181 ``` ##### (2) 分库分表配置示例(`config-sharding.yaml`) ```yaml schemaName: sharding_db dataSources: ds_0: url: jdbc:mysql://localhost:3306/db0?serverTimezone=UTC username: root password: root ds_1: url: jdbc:mysql://localhost:3306/db1?serverTimezone=UTC username: root password: root rules: - !SHARDING tables: user: actualDataNodes: ds_${0..1}.user_${0..1} tableStrategy: standard: shardingColumn: user_id shardingAlgorithmName: user_table_hash keyGenerateStrategy: column: user_id keyGeneratorName: snowflake defaultDatabaseStrategy: standard: shardingColumn: region_id shardingAlgorithmName: database_hash shardingAlgorithms: database_hash: type: HASH_MOD props: sharding-count: 2 user_table_hash: type: HASH_MOD props: sharding-count: 2 keyGenerators: snowflake: type: SNOWFLAKE ``` #### 4. 启动与验证 ```bash # 启动命令(需在安装目录的bin文件夹下执行) ./start.sh -p 3307 # 指定代理端口 # 连接验证 mysql -h127.0.0.1 -P3307 -uroot -proot ``` #### 5. 注意事项 - **版本差异**:5.5.05.5.1的配置语法可能略有不同,需对照官方文档调整。 - **日志排查**:启动失败时检查`logs/stdout.log`定位错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值