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

Add copy of data of and to an existing database with new tenant id

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

Table: 车
列:id
列:姓名
列:tenantid

Table:牌照
列:id
列:carid(table 汽车的外键)
列:licenseplate
列:tenantid

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

汽车:
1 - 宝马 - 公司 A
2 - 保时捷 - 公司 A

车牌:
1 - 1 - MUC1234 - 公司 A
2 - 2 - EBE4321 - 公司 A

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

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

通常我只是使用 mysql_dump 来备份和恢复,但我不知道如何为复制的集合保持外键关系以及如何更改所有现有条目的 tenant_id。

最终示例应如下所示:

汽车:
1 - 宝马 - 公司 A
2 - 保时捷 - 公司 A
3 - 宝马 - 公司 B
4 - 保时捷 - CompanyB

车牌:
1 - 1 - MUC1234 - 公司 A
2 - 2 - EBE4321 - 公司 A
3 - 3 - MUC1234 - 公司 B
4 - 4 - EBE4321 - 公司 B

有人有想法吗?通常我只需要一个方向就可以了。

非常感谢。

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

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