sharding如何动态添加数据源

场景、问题:有一个需求就是有多个租户,一个租户一个数据源,添加一个租户就新增一个数据源。然后每个数据源需要分表,有什么解决方案?

1 个赞

动态增加数据源、分片规则的话, 可以了解下 ShardingSphere 的 DistSQL.

1 个赞

这是集成在代码里的还是一个中间件代理?

要部署ShardingSphere-Proxy?

是的. 需要部署 ShardingSphere-Proxy 代理端

没弄过,怎么快速上手? :sweat_smile:

本地最快的方式就是quick start. ShardingSphere-Proxy :: ShardingSphere (apache.org) .正常就用docker image, 挂到你的容器治理平台.

好吧,你真活跃 :joy:

@xieyc 其实就我之前提的那种思路啊.在任意客户端(包括 Project )通过 DistSQL 调度 Shardingsphere Proxy,shardingsphere Proxy会在 Zookeeper/Etcd 进行对应的处理,Shardingsphere JDBC再通过Cluster Mode Mode :: ShardingSphere 走 Zookeeper/Etcd注册中心自动同步配置.

2 个赞

good job.

@泠恒谦 主要是我不会,所以不太能理解这个思路,我先学习学习,有问题再问大佬

@泠恒谦 java客户端怎么通过DistSQL调度Shardingsphere Proxy?

@xieyc ShardingShere Proxy会虚拟出一个 MySQL / PostgreSQL 连接( 显然这取决你在ShardingSphere Proxy 的选择 ),你按照正常的数据源配置方法配置它, 然后将需要的 DistSQL 放到Spring JDBC Template 或 Mybatis 或其他任意能执行SQL的组件中即可. 这样的业务理所当然能嵌套入 Spring Schedule, Apache DolphinScheduler或Quartz等的任务调度当中.

你好,我也有同样的需求。请教一下该问题是怎么很好的解决的

@方保彦 目前还没时间去弄,按上面评论的 通过DistSQL可以实现

谢谢。我正在尝试DistSQL的方式来实现。

有不使用shardingproxy的解决方案吗,想只在ShardingSphere中实现

@happyycm 也可以每个表加个租户id 然后按租户id分库

你直接用数据源的contextmanager手动实现是一个效果,就是包装起来比较怪= =

现在按租户分库和读写分离都没问题,就是如果来了新租户想动态添加一个数据源,总不能加一个租户,就要重启下所有的服务…

京ICP备2021015875号