上周開始嘗試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菜單方式操作數據遷移。
评论