TiDB怎么做集群内表数据同步?

现有一个TiDB集群实例,项目使用微服务开发,serviceA分配了dbname1, serviceB分配了dbname2。dbname1和dbname2互相隔离,不能跨库。
TiDB实例

  • dbname1 (serviceA使用)
    • table1
  • dbname2 (serviceB使用)
    • table2

由于dbname1 table1表是基础数据,dbname2 内表table2需要与table1作join操作,但没权限。问题来了,TiDB可否做到同步table1到 dbname2内?

1 个赞

你想要的是实时同步么

1 个赞

可以的,主要看你想达到哪种程度

1 个赞

独立一个维表db,大家都跨库查那个维表可以么?

1 个赞

微服务不上聚合和数据副本么?
基础表,应该在每个微服务中均有副本,要么就全局给予缓存服务,或者独立的服务

1 个赞

类似物化视图?

1 个赞

同一个实例下两个库的表实时同步做不到

实时怎么做?非实时呢?

不是物化视图

就是想实现你说的这个“基础表均有副本”。基础表数据是动态会变的,用来满足服务内join操作

有哪几种做法呢?

这个感觉还不如我直接就用那个表吧

延时不大也可以考虑的

真感觉还不如直接就用那个表呢

业务上不能双写?

这种情况,我这边实践是用etl工具kettle定时执行脚本同步

1 个赞

我也觉得不如直接使用。但是跨实例就行不通了

kettle定时执行脚本同步

DB2 上就是一个只读操作, create view 不就行了。

跨集群肯定就得通过一些同步工具来做了,比如kettle之类的