无需停机即可迁移巨型生产数据库

时间:2013-08-23 00:34:09

标签: mysql sql ruby-on-rails database amazon-rds

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

如果没有用户遇到停机,我该如何迁移这个大型生产数据库?

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

更新:这可能是相关的:amazon-rds offers read replicasMulti-AZ deployments似乎可能是针对此类事情制作的。不过,这是第一次这样做,所以欢迎任何方法的指导,无论是这个还是其他。

1 个答案:

答案 0 :(得分:2)

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

  1. 将数据复制到新服务器(并在旧数据库服务器上记录二进制日志位置)
  2. 打开从旧服务器到新服务器的复制(并等待它赶上)
  3. 重新配置Rails应用程序以指向新服务器
  4. 如果“写入停机时间”比“完全停机时间”(显然取决于应用程序)更可接受,则只读模式是另一种可能的选择。