shading-proxy服务入门配置

简介

Sharding-Proxy是一个分布式数据库中间件,定位为透明化的数据库代理端。主要功能是分库分表,他是一个独立部署的服务端,提供统一的数据库代理服务,注意,ShardingProxy目前只支持MySQL和PostgreSQL。你可以把它这个中间件当做一个数据库来看,也可以把它当成一个封装的sharding-jdbc服务。它的整体架构图如下:
在这里插入图片描述

下载

地址:https://shardingsphere.apache.org/document/legacy/4.x/document/en/downloads/

部署

下载下来之后,直接在本地解压,windows和Linux上提供了一套统一的部署发布包,但是注意lib目录的jar包后缀是否完整,不完整的手动补齐。

配置

具体配置可以看官方文档。官网文档地址,以下是我自己配置。
1.修改server.yaml,将配置文件中的authentication和props两段配置的注释打开。shardingRule是核心配置,主要配置分表算法,不熟悉的建议从sharding-jdbc学起。在这里插入图片描述

在这里插入图片描述

#proxy数据库名称
schemaName: test_project

dataSources:
  project:
    url: jdbc:mysql://192.168.1.110:3306/my_test_project?serverTimezone=UTC&useSSL=false
    username: root
    password: 1234
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
  project_0:
    url: jdbc:mysql://192.168.1.110:3306/my_test_project0?serverTimezone=UTC&useSSL=false
    username: root
    password: 1234
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
  project_1:
    url: jdbc:mysql://192.168.1.110:3306/my_test_project1?serverTimezone=UTC&useSSL=false
    username: root
    password: 1234
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50

shardingRule:
  tables:
    pub_org:
      actualDataNodes: project_${0..1}.pub_org$->{0..1}
      tableStrategy:
        inline:
          shardingColumn: id
          algorithmExpression: pub_org$->{id%2}
      keyGenerator:
        type: SNOWFLAKE
# 自定义的主键生成器
# type: MYKEY 
        column: id
        props:
# 自定义的主键生成偏移量
          mykey-offset: 88 
    sys_dept:
      actualDataNodes: project_${0..1}.sys_dept$->{0..1}
      tableStrategy:
        inline:
          shardingColumn: id
          algorithmExpression: sys_dept$->{id%2}
      keyGenerator:
        type: SNOWFLAKE
# 自定义的主键生成器
# type: MYKEY 
        column: id
        props:
# 自定义的主键生成偏移量
          mykey-offset: 88
    sys_grade:
      actualDataNodes: project_${0..1}.sys_grade$->{0..1}
      tableStrategy:
        inline:
          shardingColumn: id
          algorithmExpression: sys_grade$->{id%2}
      keyGenerator:
        type: SNOWFLAKE
# 自定义的主键生成器
# type: MYKEY 
        column: id
        props:
# 自定义的主键生成偏移量
          mykey-offset: 88 
    sys_patriarch:
      actualDataNodes: project_${0..1}.sys_patriarch$->{0..1}
      tableStrategy:
        inline:
          shardingColumn: id
          algorithmExpression: sys_patriarch$->{id%2}
      keyGenerator:
        type: SNOWFLAKE
# 自定义的主键生成器
# type: MYKEY 
        column: id
        props:
# 自定义的主键生成偏移量
          mykey-offset: 88 
    sys_student:
      actualDataNodes: project_${0..1}.sys_student$->{0..1}
      tableStrategy:
        inline:
          shardingColumn: id
          algorithmExpression: sys_student$->{id%2}
      keyGenerator:
        type: SNOWFLAKE
# 自定义的主键生成器
# type: MYKEY 
        column: id
        props:
# 自定义的主键生成偏移量
          mykey-offset: 88 
    sys_teacher:
      actualDataNodes: project_${0..1}.sys_teacher$->{0..1}
      tableStrategy:
        inline:
          shardingColumn: id
          algorithmExpression: sys_teacher$->{id%2}
      keyGenerator:
        type: SNOWFLAKE
# 自定义的主键生成器
# type: MYKEY 
        column: id
        props:
# 自定义的主键生成偏移量
          mykey-offset: 88 
          
  #主库
  defaultDataSourceName: project

2.修改conf目录下的config-sharding.yaml,这个配置文件就是shardingProxy关于分库分表部分的配置。整个配置和之前我们使用ShardingJDBC时的配置大致相同,我们在最下面按照自己的数据库环境增加以下配置:

#账号为root,密码为sharding(不要按照官网配置)
authentication:
  users:
    root:
      password: sharding

props:
  max.connections.size.per.query: 2
  acceptor.size: 16  # The default value is available processors count * 2.
  executor.size: 16  # Infinite by default.
  proxy.frontend.flush.threshold: 128  # The default value is 128.
  # LOCAL: Proxy will run with LOCAL transaction.
  # XA: Proxy will run with XA transaction.
  # BASE: Proxy will run with B.A.S.E transaction.
  proxy.transaction.type: LOCAL
  proxy.opentracing.enabled: false
  proxy.hint.enabled: false
  query.with.cipher.column: true
  #打印sql
  sql.show: true
  allow.range.query.with.inline.sharding: false

3.启动
修改完以上两个配置,我们就可以启动ShardingProxy的服务了。启动脚本在bin目录下。其中,windows平台对应的脚本是start.bat,Linux平台对应的脚本是start.sh和stop.sh。
注意:​ 启动时,我们可以直接运行start.bat脚本,这时候,ShardingProxy默认占用的是3307端口。为了不跟我们之前搭建的多个MySQL服务端口冲突,我们定制下启动端口,改为3316端口,当然也可以是其他端口,只要不和本地的端口冲突就可以。
命令:start.bat 18080
启动完成就是这个样子
在这里插入图片描述
4.连接
在这里插入图片描述

总结

整个sharding + proxy的所有这些功能,本质上其实都只解决了一个问题,就是单机数据库容量的问题。在软件层面对硬件资源进行管理,从而便于对数据库的横向扩展。但是我们也要意识到也他给我们带来了很多问题,例如对业务的侵入大。业务系统写的SQL将不再是纯粹的能在服务器上运行的SQL了,对大量跨维度的JOIN、聚合、子查询、排序等功能在业务上很难进行验证。这必然会弱化数据库的功能。

​ 并且,使用ShardingSphere管理后,数据库之间变成了结合非常紧密的依赖关系,对整个集群的扩容也会带来相当大的难度。

​ 另外,ShardingSphere这种方式实际上将原本由业务管理SQL的工作方式,转化成了由业务管理逻辑SQL,而运维管理实际SQL的混合工作模式,再加上一大堆服务的引入,整个服务运维的维护工作量以及工作难度也上升了非常多。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值