如何合并分歧的mysql模式中的数据?

时间:2012-07-23 00:02:43

标签: mysql linux database-schema data-migration

我有两台服务器共享一个原始的祖先代码库,但在过去的几个月里,它在数据库模式方面发生了变化(我使用的是mysql)。我即将使用第二个作为我的新生产服务器,但我必须更新数据(有新用户,有与这些用户相关的新数据等)。我希望服务器中的数据现在存在,但是旧模式具有权限,但我希望新模式中的模式是最后一个。所以这是一种奇怪的合并:我希望将旧服务器中的数据导入到具有(不是非常)不同模式的新服务器中。

我在考虑简单地使用最新数据转储服务器,但是由于架构已经发生了很大变化,因此加载它将无法工作。

我还考虑转储新服务器的模式,将其应用于旧服务器的副本,然后从后者转储数据并将其加载到新服务器中,但是我我不知道如何去做,如果这是最安全的选择。

我在mac OS X上开发,我的两台服务器都是debian。

2 个答案:

答案 0 :(得分:1)

将新服务器中的模式应用于旧服务器然后迁移数据是最安全的选择,主要是因为它迫使您根据数据评估具体更改的内容以及您要对此进行的操作(例如,添加了新列,您想要放入什么内容?)

由于您提到的架构并没有大不相同,只需在没有数据(即只有表格)的情况下执行每个服务器的mysqldump并手动比较(例如,使用diff)将告诉您哪些列不同。然后,您可以在旧数据库上使用ALTER应用这些更改。

这一切都有些笨拙,但最终还是没有一种非愚蠢的做法。

答案 1 :(得分:0)

请看这里:http://bitbucket.org/idler/mmp - 它是mysql架构版本控制的工具,但只有架构,而不是数据。首先,您必须迁移架构,然后加载新数据。