在数据库之间移动表

时间:2010-10-08 19:54:26

标签: mysql database database-design refactoring refactoring-databases

对于一点点清理,我在MySQL数据库(不同的硬件)之间移动了25个表。这不是整个数据库,只有几百个表中的25个......这些表并不属于那里,我不会为NDA原因而讨论原因。

现在,这将打破很多代码和SQL查询。

这样做的最佳方式是什么?

  1. 立即将它们全部移动。

  2. 将它们移动1比1

  3. -

    立即将它们全部移动,非常好。可能是我错过了一些中断和破坏的代码,但将它们作为块移动要快得多,花在推出代码上的时间更少。

    将它们一个接一个地移动是一种很好的,大的东西破坏的可能性更小,但是需要花费更多的时间来微观管理工作,冗余工作和部署。

    我可以暂时在两个数据库之间镜像表吗?也许是一个联合表?

    -

    其他信息:共有25个表格彼此相关。

    我无法一次关闭数据库数小时,大约5分钟的停机时间是可以接受的。

    -

    最好的方法是移动所有这些数据并保持代码,sql和我的状态良好?

    我可以将表联合作为将表复制到新数据库的方法吗?

    -daniel

3 个答案:

答案 0 :(得分:1)

似乎一次一个地移动它们将是要走的路。这样你就会有一堆简单的问题,而不是一个很大的难题。我希望你的系统经过大量的自动化测试,以确保所有这些改组不会破坏任何东西。

另一件事:你谈到关闭数据库。如果您在开发环境中进行更改并且仅在确定一切正常时才进行更改,那么为什么还需要在生产中停机?我希望你不要考虑在生产中进行这些改变而不先在开发中进行。

答案 1 :(得分:1)

您可以使用SQLYog(mysql前端)来执行此操作。

Meny选项是Powertools - >数据库同步向导

您必须能够远程打开两个数据库(主机%应该在那里)

答案 2 :(得分:0)

去过那里,做到了,实际上现在正处于类似项目的中间。通过我们的项目,我们继承了一些我们不知道它们是什么或者一切都在哪里,但这里是一般流程:

  • 在新服务器上,设置任何适当的帐户
  • 如果需要,在应用程序配置
  • 中查找更改服务器和用户名/密码的位置
  • 关闭Web应用程序,以便在移动时没有任何写入
  • 移动数据库
  • 重新配置应用
  • 将其重新启动
  • 对每个数据库/应用程序重复

对于小东西,这只需要几秒钟。 SQLyog在这里是一个很好的帮助。如果您有大型数据库或决定不需要任何停机时间,那么您需要考虑复制。