我们在AWS上托管一个Rails应用程序,该应用程序在amazon-rds数据库上使用mysql。我们在数据库中有一个我们想要迁移的巨型表,但由于数百万行,所以需要几天时间才能进行迁移。具体来说,我们正在将VARCHAR
移至TEXT
列
如果没有用户遇到停机,我该如何迁移这个大型生产数据库?
我听到的一个想法是设置数据库的副本,并在那里进行迁移,并在完成后将其切换为主数据库。但是,我不确定这将如何考虑在迁移过程中输入的用户数据。
更新:这可能是相关的:amazon-rds offers read replicas和Multi-AZ deployments似乎可能是针对此类事情制作的。不过,这是第一次这样做,所以欢迎任何方法的指导,无论是这个还是其他。
答案 0 :(得分:2)
我不知道您使用的托管选项是否可行,但我会以这种方式解决问题:
如果“写入停机时间”比“完全停机时间”(显然取决于应用程序)更可接受,则只读模式是另一种可能的选择。