【问题标题】:moving tables between databases在数据库之间移动表
【发布时间】:2011-04-23 01:45:30
【问题描述】:

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

现在,这将破坏大量代码和 sql 查询。

最好的方法是什么?

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

  2. 将它们逐一移动

--

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

一个接一个地移动它们是一种不错的方式,大东西坏掉的机会更少,但是更多的时间将花在微观管理工作、冗余工作和部署上。

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

--

其他信息:共有 25 个表,它们都按内容相互关联。

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

--

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

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

-丹尼尔

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 测试覆盖率不如预期,那我就不用太担心了。但是,有很多小程序在运行并与数据库通信,我敢肯定我不会到处都能找到代码并获得 100% 的覆盖率。这将是生产停机的原因。
    • 另外,我不能一次部署所有东西。这里和那里有各种各样的代码。这就是为什么我有兴趣在两个地方拥有同一张桌子。 (联合 mysql 表)
    【解决方案2】:

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

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

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

    【讨论】:

    • 移动表格和数据很容易!它正在尝试管理所有代码/sql 更改!
    • 过去,我们通过所有代码进行文本搜索,寻找 MySQL 帐户的用户名。这有帮助。
    【解决方案3】:

    你可以使用SQLYog(mysql前端)来做。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-22
      • 2023-04-07
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      相关资源
      最近更新 更多