上周开始尝试Drupal网站的升级,先拿小数据量的网站做了实验,本个人网站也算是升级成功。然后想把一个大数据量的网站也升级看看,拿了“传真名录”这个站来做实验。
将其各个第三方模块升级到Drupal 6配套的最新版本都很顺利,我也就没有把Drupal 6.20先升级到6.24,而是直接升级的,这在以前其它小数据量网站试过,没有问题。
在Drupal 6.20中设置为“离线模式”,然后卸载所有第三方模块,再将文件夹都换为Drupal 7.12的内容,并复制一些配置文件,在Drupal 7下就可以运行updata.php了,但看到update taxonomy模块的时候就不怎么动了,几个小时过去都还在等,从phpmyadmin中查看是一直在对数据库进行插入/更新操作,达到上百万条记录,不断要复制到临时表,所以极慢,中途还中断了多次。这样陆陆续续运行了十多个小时以上才算是update结束。😢
接下来还要修改一些template, block和page中的修改过的api调用代码,才可以看到界面了,然后再安装第三方模块,涉及到CCK的时候就遇到问题,在使用Migrate fields做数据迁移的时候,就遇到运行超时错误,修改了120s的限制时间还是无法在短期内完成。从phpmyadmin中看,是为每个自定义字段新建了一个表,表结构建好了,也转换了第一条数据,后面的几十万条就都没有了。没有办法,只好用insert的sql语句模拟导入了指定的条数,然后update其中的字段与以前的老表中的内容一致。这样的办法花了我差不多一个周末的时间,最后才算是把数据都转换好。🤔
然后content template中读取字段的格式也变了,修改template的页面也无法打开,只有在phpmyadmin中修改,后来算是基本上升级好了,才把“离线模式”解除。还有page title和breadcrumb的显示也与以前有所不同,以前页面右下角的分类链接也没有找到,剩下几个细节问题留着以后解决。
这样折腾一番算是搞怕了,其它数据量大的Drupal 6网站算是不敢尝试升级到7了,就升级到最新的6.24就可以。只有新建网站才从一开始就采用Drupal 7。
2015年7月补充:现在可以用drush命令来进行批量处理:
All commands in content_migrate: (content_migrate) content-migrate-field-data Migrate a single field data. content-migrate-field-structure Migrate a single field structure. content-migrate-fields Migrate some or all fields. content-migrate-rollback Rollback migration of some or all fields. content-migrate-status Show field migration status.
不过在大数据量处理的时候,一样可能遇到报错,这是可以采取的办法:增加内存、MySQL超时杀死进程的时间限制延长、先用structure再用data逐个字段迁移、必要时rollback再重新迁移。如果数据量不是太大,也可以使用web菜单方式操作数据迁移。
评论