1

为了稍微清理一下,我在 MySQL 数据库(不同的硬件)之间移动 25 个表。这不是整个数据库,只有几百个表中的 25 个......这些表并不真正属于那里,出于 NDA 的原因,我不会详细说明原因。

现在,这将破坏很多代码和 sql 查询。

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

  1. 一次将它们全部移动。

  2. 将它们逐个移动

--

一次将它们全部移动,有点好。可能是我错过了一些中断和损坏的代码,但是将它们作为一个块移动要快得多,花费在推出代码上的时间也更少。

将它们一个一个地移动是一种不错的方式,大东西破坏的可能性较小,但更多的时间将花在微观管理工作、冗余工作和部署上。

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

--

杂项信息:有 25 个表都按内容相互关联。

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

--

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

我可以联合这些表作为将表复制到新数据库的一种方式吗?

-丹尼尔

4

3 回答 3

1

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

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

于 2010-10-08T19:58:33.610 回答
1

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

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

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

于 2010-10-09T06:13:01.380 回答
0

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

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

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

于 2010-10-08T20:00:51.130 回答