Rails,如何迁移大量数据?

aka*_*aul 18 ruby database-migration ruby-on-rails-3

我有一个rails 3应用程序运行旧版本的狂欢(一个开源购物车).我正在将其更新到最新版本.这要求我在数据库上运行大量迁移以与最新版本兼容.然而,应用程序当前数据库大约大约300mb并且在我的本地机器上运行迁移(mac os x 10.7,4gb ram,2.4GHz Core 2 Duo)需要3天才能完成.

我能够使用amazon ec2实例(High-I/O On-Demand Instances,Quadruple Extra Large)将此时间减少到仅16小时.但是16个小时仍然很长,因为我将不得不取下网站来执行此更新.

有没有人有任何其他建议来降低这个时间?或者任何提高迁移性能的技巧?

仅供参考:在亚马逊实例上使用ruby 1.9.2和ubuntu.

Bjö*_*son 0

也许你已经考虑过这一点:

  1. 告诉数据库不要费心确保所有内容都在磁盘上(没有 WAL、没有 fsync 等),您现在拥有一个内存数据库,这应该会产生很大的差异。(由于您已使数据库脱机,因此您可以在发生断电或类似情况的情况下从备份中恢复)。完成后打开 fsync/WAL。

  2. 在使数据库脱机之前,您可能可以执行一些迁移。当然,在暂存环境中测试一下。这种大规模的用户迁移很可能会实时进行。确保您不在事务中执行此操作,您可能需要对它们进行一些修改。

我不熟悉你的具体情况,但我确信你可以做更多的事情,除非这还不够。