我们在AWS上托管一个Rails应用程序,该应用程序在amazon-rds数据库上使用mysql。我们的数据库中有一个要迁移的巨型表,但是由于要进行数百万行的记录,因此迁移需要几天的时间。具体来说,我们将VARCHAR移到TEXT

如何在用户不停机的情况下迁移这个大型生产数据库?

我听说的一个想法是设置数据库的副本,然后在其中进行迁移,并在完成后将其切换为主数据库。但是,我不确定在迁移过程中如何考虑输入的用户数据。

更新:这可能是相关的:amazon-rds offers read replicasMulti-AZ deployments似乎是为这种类型的事物而制作的。但是,第一次这样做时,欢迎任何方法的指导,无论是这种方法还是另一种方法。

最佳答案

我不知道您使用的托管选项是否可行,但是我可以通过以下方式解决问题:

  • 将数据复制到新服务器(并在旧数据库服务器上记录二进制日志位置)
  • 打开从旧服务器到新服务器的复制(并等待其 catch )
  • 重新配置Rails应用程序以指向新服务器

  • 如果“写入停机时间”比“完全停机时间”(显然取决于应用程序)更可接受,则只读模式是另一个可能的选择。

    10-07 19:50
    查看更多