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

配置没有单表情况

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}

在这里插入图片描述

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我很高兴为您介绍Shardingsphere-ProxyShardingsphere-Proxy是为数据库读写分离和数据库多集群而设计的代理中间件,它可以帮助您更轻松地实现数据库分片,提高数据库性能和可用性。 我了解Shardingsphere-Proxy,它是一个用于提供高性能和高可用性的分布式数据库中间件。ShardingSphere ProxyShardingSphere的一个子项目,它是一个基于MySQL协议实现的数据库代理,可以实现对数据库的读写分离、分片等功能。ShardingSphere Proxy支持MySQL、PostgreSQL、Oracle和SQLServer等多种数据库,并且可以和Spring、MyBatis等常见的Java框架无缝集成。使用ShardingSphere Proxy可以提升数据库的性能和可扩展性,同时也可以减少业务代码的复杂度。 ### 回答2: ShardingSphere-ProxyShardingSphere的子项目之一,它是一个轻量级、易扩展的数据库中间件,可以将多个数据库组织成逻辑上的一个单一数据库。ShardingSphere-Proxy的主要作用是在数据库集群上提供统一的访问点,并提供一些通用的功能,例如路由、负载均衡、语句解析、分片故障转移等。 ShardingSphere-Proxy主要的特点是高可用性、高性能、易扩展,它支持多种数据源类型,例如MySQL、Oracle、SQLServer等,可以进行水平扩展,以满足更高的并发处理能力要求。此外,ShardingSphere-Proxy还支持对SQL语句进行解析,并在其中动态注入表路由条件、分表算法、分库算法等,从而实现分布式数据库的规划和管理。 ShardingSphere-Proxy还支持读写分离、分片事务等高级特性,用户可以通过读写分离实现读写分离,并通过分片事务维护分布式事务的一致性。ShardingSphere-Proxy还支持对SQL语句进行监控和统计,可以对数据库进行一些性能调优和问题定位。 总之,ShardingSphere-Proxy是一个非常实用的数据库中间件,它可以帮助用户快速搭建分布式数据库,并提供了一些高级特性和管理功能,可以极大地简化分布式数据库的开发和维护工作。同时,ShardingSphere-Proxy还在不断地完善和优化中,未来有望成为分布式数据库领域的佼佼者。 ### 回答3: ShardingSphere Proxy是一种数据中间层的解决方案,可以帮助应用程序实现高性能、高可用和分布式数据库的访问和管理。它提供了一个统一的入口,用于处理对多个数据库的请求,并使应用程序可以无感知地访问多个不同类型的数据库,包括MySQL、Oracle、SQL Server和PostgreSQL等。ShardingSphere Proxy的核心功能包括: 1. 数据分片:可以将业务数据分散到多个数据库实例中,以便对大型数据进行水平划分和分散负载。 2. 读/写分离:以提高负载处理能力和性能为目的,将读操作负载均衡到多个从数据库实例中,而写操作则集中在主数据库实例上。 3. 透明的数据访问:ShardingSphere Proxy提供了一种透明的数据访问方式,应用程序可以采用常规方式访问多个底层数据库,而不必担心如何管理和协调数据库的访问。 4. 数据库路由:根据预定义的路由规则,将请求路由到相应的数据库实例上,并执行相应的操作。 5. 动态配置和管理:ShardingSphere Proxy提供了一组API和控制台,可让管理员动态地管理和配置它所监管的数据库实例。 总之,ShardingSphere Proxy是一个解决分布式数据库访问和管理的强大工具,它帮助企业提高了性能,可扩展性和可用性,同时还降低了复杂性和成本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值