如何将两个具有不同增量ID的数据库组合在一起?

时间:2011-01-19 22:54:37

标签: mysql

我有一个主/从MySQL设置我写的数据。有一个问题,我不得不暂时写入另一个数据库设置24小时。现在,我想将临时存储中的这些统计信息带入主/从设置。

这些表每个都使用递增ID作为键。有没有办法加载统计数据而不覆盖两个相似的ID,然后重新处理递增ID列,以便数字再次一致和增量?

2 个答案:

答案 0 :(得分:1)

根据您的具体情况,一个选项可能是运行类似:

UPDATE [table] SET id=id+[number of records in backup table] WHERE id>=[first duplicate id] ORDER BY id DESC` 
主/从数据库上的

在id序列中创建一个间隙,然后当你从备份中插入记录时,它们将填补空白,并且id将按顺序并按正确的日期顺序排列。

显然,您必须小心在每个表的查询中使用正确的数字,并确保更新使用这些ID作为外键的任何表。我强烈建议先备份这个机动。

答案 1 :(得分:1)

最简单的解决方案:将主服务器上表格的自动增量重新定位到current value + number of rows in your temp storage。这需要在您的日志记录应用程序关闭时完成,否则它将变得混乱。这是在几分钟内完成的。您可以重新启动应用。

然后,将temp db上的第一个id和master上的自动增量的旧值添加到temp db上的id之间。

最后,只需将temp数据库中的数据插入到master上的表中,就完成了!