Mysql 使用新租户id将和的数据副本添加到现有数据库

Mysql 使用新租户id将和的数据副本添加到现有数据库,mysql,multi-tenant,Mysql,Multi Tenant,我们使用MySQL数据库,我们的数据模型是多租户模型,这意味着每个表都有一个名为“tenant_id”的列,其中包含现有租户的id。非常简单的示例: 表格:汽车 列:id 列:名称 栏目:tenantid 表格:许可证牌 列:id 列:carid(表车外键) 列:licenseplate 栏目:tenantid 当然,我们在这个数据库中有一组数据-通用样式-表示由外键(自动递增整数)链接的表-目前主要用于测试目的。再次简化示例: 汽车: 1-宝马-公司a 2-保时捷-公司 许可证牌照: 1-1-

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

表格:汽车
列:id
列:名称
栏目:tenantid

表格:许可证牌
列:id
列:carid(表车外键)
列:licenseplate
栏目:tenantid

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

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

许可证牌照:
1-1-MUC1234-CompanyA
2-2-EBE4321-CompanyA

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

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

通常我只使用mysql_dump进行备份和恢复,但我不知道如何保持复制集的外键关系,以及如何更改所有现有项的租户id

最后,示例应如下所示:

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

许可证牌照:
1-1-MUC1234-CompanyA
2-2-EBE4321-CompanyA
3-3-MUC1234-CompanyB
4-4-EBE4321-CompanyB

有人有主意吗?通常我只需要一个方向


非常感谢。

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


IMHO基于代码的方法会很好,请确保数据在复制之前经过验证。

谢谢-我们现在使用的是一个自我实现的代码,它每行创建一个副本,更新租户并为新的副本设置外键——花了我一天时间——对此没有任何抱怨,但老实说,我希望有一个SQL解决方案,但这可能行不通。