Drupal 7 - > 8大型数据库的迁移需要永远

时间:2017-06-27 15:34:22

标签: database drupal drupal-8

所以我有一个Drupal 7数据库,有200万用户需要以最少的停机时间(目标是一小时)移动到Drupal 8。 Drupal迁移模块似乎解决了这个问题,但是它一次写入一个项目的新行,在我的测试中,4,000个用户+相关数据花了20分钟在坦率的野兽AWS实例上。外推到完整数据集,运行迁移需要7天,而且停机时间不合理。

我对Drupal核心做了feature request,但我也想知道社区是否有任何我错过的想法。另外,我想就这个问题产生一些讨论。

1 个答案:

答案 0 :(得分:0)

如果有人仍然关心这一点,我已经解决了这个问题。进一步的研究表明,Drupal迁移模块不仅一次编写一个新行,而且还一次从源中读取一行。此外,对于每一行,Drupal将写入源表的映射表,以便它可以支持回滚和更新。

由于用户的数据存储在每个自定义字段的一个单独的表中,因此每个用户会产生8次读取和16次写入。

我最终扩展了Drupal的Migration Executable以运行该进程。然后我覆盖了读取数据的部分和编写它的部分以批量完成它们的工作,并且不写入映射表。我相信我的预计时间现在不到一小时(加速168次!)。

尽管如此,尝试使用Drupal基础设施还是比较值得的。如果您自己这样做,只需编写命令行应用程序并手动执行SQL查询。