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
Sharding-Proxy查询分库分表数据,很方便!!_第1张图片
其中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日志,没有报错,最后提示加载了逻辑表和所有物理表,就是成功的
Sharding-Proxy查询分库分表数据,很方便!!_第2张图片
然后用mysql workbench链接
Sharding-Proxy查询分库分表数据,很方便!!_第3张图片
启动后,直接连会有这个报错,一直连不上

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

Sharding-Proxy查询分库分表数据,很方便!!_第4张图片
等个十几分钟,再练就可以了(有时候就是连不上,我就重启sharding-proxy,搞几次就可以),,具体原因不清楚,可能docker不稳定,导致连不上

总结
1、每次重启,都会连不上,很奇怪,多次重启,多尝试就可以
2、我的分表有500多,导致30s查询超时,加大这个值
在这里插入图片描述
Sharding-Proxy查询分库分表数据,很方便!!_第5张图片

你可能感兴趣的:(数据库,java,mysql,sharding-proxy)