开启租户数据库隔离,给租户配置数据源后,需要重启服务才可以使用?

Blade 已结 1 418
gtfhao
gtfhao 2023-10-11 17:12

一、该问题的重现步骤是什么?

1. 

#多租户配置
tenant:
 #多租户增强
 enhance: true
 #多租户授权保护
 license: true
 #动态数据源功能
 dynamic-datasource: true
 #动态数据源全局扫描
 dynamic-global: true
 #多租户字段名
 column: tenant_id
 #排除多租户逻辑
 exclude-tables:
   - blade_user

2. 开启了多租户数据库隔离配置,超管配置数据源2个,新建租户,给租户设置数据源1,重启服务

3.租户登录,使用的数据库是配置的数据源1

4.超管登录,给刚登录的租户设置成数据源2,租户登录,发现用的依然是数据源1.租户选择的数据源没有生效


二、你期待的结果是什么?实际看到的又是什么?

期待:超管设置租户数据源后立即生效

实际:租户数据源没有实时生效

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

bladex企业版,bladex-boot3.2.0 Windows11

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  •  admin
    admin (楼主)
    2023-10-11 17:16

    底层对租户数据源做了缓存,租户一旦加载数据源后,就不能在线实时更换了,除非重启服务才可以。

    这样做是为了避免误操作导致数据分散的情况出现。

    比如租户配置了数据源1,跑了1w数据后,在线配置数据源2,后续数据又跑到其他地方了,这样会给后续带来较大的运维成本。

    逻辑具体看这里:https://center.javablade.com/blade/BladeX-Tool/src/branch/master/blade-starter-tenant/src/main/java/org/springblade/core/tenant/dynamic/TenantDataSourceHolder.java#L52


    作者追问:2023-10-11 17:16

    那么第一次配置数据源1时,是不是不用重启就可以给你租户使用?

    回答: 2023-10-11 17:16

    如果没加载过的话,是不用重启的,你这边没加载过数据源也需要重启才能生效么?

    作者追问:2023-10-11 17:16

    第一次新建租户,配置数据源不用重启,感谢感谢

    0 讨论(1)
提交回复