Sharding-Proxy查询分库分表数据,很方便!!

背景

目前公司不大,没有方便的数据库平台支持分库分表数据的查询,每次只能拿到分表的数据字段,手动hash获得标的索引,再去物理表查询,费时费力

改造

目前市面上有很多mysql分库分表的代理,自己选择了Sharding-proxy

我用的docker,用的Sharding-proxy版本4.1.0,没有用太高的,太高的试了一次,一直有问题,mysql客户端连不上(navicat 15不行,后来换了mysql WorkBench)

流程

1、下载Sharding-proxy
使用docker下载

docker pull apache/sharding-proxy:4.1.0

下载好后,自己本地创建目录与docker目录对应,然后启动,对外端口用13408

docker run --name=sharding_proxy_4_1_0 -d -v /Users/kang/sharding_proxy4.1.0/conf:/opt/sharding-proxy4.1.0/conf -v /Users/kang/sharding_proxy4.1.0/ext-lib:/opt/sharding-proxy4.1.0/ext-lib --env PORT=3408 -p13408:3408 apache/sharding-proxy:4.1.0

mysql需要下载jar包,放到ext-lib目录下,conf文件下,创建config-sharding.yaml和server.yaml
在这里插入图片描述
其中config-sharding.yaml是物理表与逻辑表的对应关系,server.yaml是登录sharding-proxy的用户信息
config-sharding.yaml 可参考官网配置(https://shardingsphere.apache.org/document/legacy/3.x/document/cn/manual/sharding-proxy/configuration/) 这里我只写了需要的

schemaName: sharding_db

dataSources:
  tracking_sharding:  //数据库别名
    url: jdbc:mysql://自己的数据库地址
    username: ****
    password: *****
    connectionTimeoutMilliseconds: 60000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 65

shardingRule:
  tables:
    logistics_track_info: //逻辑表
      actualDataNodes: tracking_sharding.logistics_track_info_${0..511} //物理表 512个表
      tableStrategy: 
        inline:
          shardingColumn: logistics_number
          algorithmExpression: logistics_track_info_${logistics_number % 512}
  bindingTables:
    - logistics_track_info,logistics_track_relation
  defaultTableStrategy:
    none:

server.yaml

authentication:
  users:
    root: //可访问所有表
      password: root
    sharding:  //只能访问sharding
      password: sharding
      authorizedSchemas: sharding_db

启动之后,查看docker日志,没有报错,最后提示加载了逻辑表和所有物理表,就是成功的
在这里插入图片描述
然后用mysql workbench链接
在这里插入图片描述
启动后,直接连会有这个报错,一直连不上

Lost connection to MySQL server at 'reading initial communication packet', system error: 0

在这里插入图片描述
等个十几分钟,再练就可以了(有时候就是连不上,我就重启sharding-proxy,搞几次就可以),,具体原因不清楚,可能docker不稳定,导致连不上

总结
1、每次重启,都会连不上,很奇怪,多次重启,多尝试就可以
2、我的分表有500多,导致30s查询超时,加大这个值
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sharding-Proxy 是一个开源的分库分表中间件,它可以帮助应用程序实现无感知的分库分表操作。下面是一个简单的步骤来利用 Sharding-Proxy 进行分库分表: 1. 安装和配置 Sharding-Proxy:首先,你需要下载 Sharding-Proxy 的安装包,并解压到你的服务器上。然后,根据你的需求修改配置文件,配置数据源和分片规则等信息。 2. 创建数据库和表:在进行分库分表之前,你需要创建相应的数据库和表结构。你可以选择手动创建,或者使用 Sharding-Proxy 提供的自动建表功能。 3. 配置分片规则:在 Sharding-Proxy 的配置文件中,你需要定义分片规则,指定如何将数据分散到不同的数据库和表中。可以使用基于范围、哈希、精确等多种分片算法。 4. 连接到 Sharding-Proxy:在应用程序中,需要修改数据库连接信息,将原来连接数据库的地址改为连接 Sharding-Proxy 的地址。这样应用程序就可以通过 Sharding-Proxy 访问分片后的数据。 5. 进行分库分表操作:现在你可以在应用程序中执行正常的数据库操作,而无需关心具体的分库分表细节。Sharding-Proxy 会根据配置的规则自动将数据路由到正确的库和表中。 需要注意的是,使用 Sharding-Proxy 进行分库分表操作需要仔细考虑数据一致性、事务处理、跨库查询等问题。在配置和使用过程中,建议参考官方文档和示例来确保正确性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值