在线 MySQL 架构迁移
[!警告] 此仓库不再被积极维护。我们将其保留在这里以用于存档/参考。
直到您的表达达数百万条记录为止。此时,ALTER TABLE 的锁定性质可能会使您的站点停机一小时或更长时间,而关键表则在迁移期间。为了避免这种情况,开发人员开始围绕问题进行设计,引入联表或将数据移至另一层。随着表的不断增长,开发变得越来越不灵活。更糟糕的是,为优化数据访问而添加或更改索引变得同样困难。
在服务器或引擎层面可以做的事情并不多。可以在 ALTER TABLE 中更改默认值,而无需锁定表。InnoDB 插件提供了在线索引创建的功能,如果您使用此引擎,这非常有用,但只解决了一半的问题。在 SoundCloud,我们很久以前就开始遇到迁移问题,在寻找第三方解决方案后,我们决定自行开发。我们将其命名为 Large Hadron Migrator,它是一个用于在线 ActiveRecord 迁移的宝石。
基本思想是在系统运行期间在线执行迁移,而不锁定表。与 [OAK][0] 和 [facebook tool][1] 不同,我们只使用一个副本表和触发器。大型强子是一个基于测试的 Ruby 解决方案,可以轻松地添加到 ActiveRecord 迁移中。它假定有一个自动递增的数字主键,称为 id,遵循 Rails 规范。与 [twitter 解决方案][2] 不同,它不需要有索引的 updated_at 列。
暂无开放 Issues,或尚未同步最近议题。