使用新租户ID添加现有数据库的数据副本

时间:2015-04-14 13:15:58

标签: mysql multi-tenant

我们使用MySQL数据库,我们的数据模型是多租户模型意味着每个表都有一个名为“tenant_id”的列,其中包含现有租户的ID。非常简单的例子:

表:汽车
栏目: id
栏目:名称
专栏: tenantid

表:牌照
栏目: id
栏目: carid (桌车的外键)
栏目:牌照
专栏: tenantid

当然,我们在这个数据库中有一组数据 - 通用样式 - 表示通过外键链接的表(自动递增的整数) - 目前主要用于测试目的。再简单的例子:


1 - 宝马 - CompanyA
2 - 保时捷 - CompanyA

licenseplate:
1 - 1 - MUC1234 - CompanyA
2 - 2 - EBE4321 - CompanyA

我正在寻找的是一种聪明的方法 1)制作当前数据集的副本 2)更改复制数据集中每个表的tenant_id(例如,从CompanyA更改为CompanyB) 3)将复制/更改的数据集添加到现有数据库

这应该有助于我们使用一个租户的当前数据作为基础,在同一个数据库中创建许多其他租户。

通常我只是使用mysql_dump进行备份和恢复,但我无法弄清楚如何为复制的集保留外键关系以及如何更改所有现有条目的tenant_id。

最后,示例应如下所示:


1 - 宝马 - CompanyA
2 - 保时捷 - CompanyA
3 - 宝马 - 公司B
4 - 保时捷 - 公司B

licenseplate:
1 - 1 - MUC1234 - CompanyA
2 - 2 - EBE4321 - CompanyA
3 - 3 - MUC1234 - CompanyB
4 - 4 - EBE4321 - CompanyB

有没有人有想法?通常我只需要一个指示去哪里。

非常感谢。

1 个答案:

答案 0 :(得分:0)

您必须通过代码中的复制服务来获取租户特定数据,更新租户ID然后插入。可以这样做。

恕我直言,基于代码的方法可以确保在复制之前验证数据。