Migrate Upgrade

Drupal 6またはDrupal 7から Drupal 8以降のサイトへの完全なアップグレードを実行するためのDrushコマンドを提供します。

migrate_upgrade
8,087 sites
36
drupal.org

インストール

Drupal 9 v4.0.2
composer require 'drupal/migrate_upgrade:^4.0'
Drupal 8 v8.x-3.2
composer require 'drupal/migrate_upgrade:8.x-3.2'

概要

Migrate Upgradeは、古いDrupalバージョン(6および7)から最新のDrupalサイト(8、9、10、11以降)への自動アップグレードを可能にする強力なマイグレーションモジュールです。Webインターフェースで動作するDrupalコアのアップグレードUIとは異なり、このモジュールはマイグレーションを実行するための包括的なDrushコマンドラインツールを提供し、管理者にアップグレードプロセスに対するより大きな制御と柔軟性を与えます。

このモジュールはDrupalコアのマイグレーションフレームワークおよびMigrate Plusモジュールと統合してマイグレーションを生成・実行します。完全なサイトアップグレードを実行するためにマイグレーションを即座に実行することも、実行前にカスタマイズ可能なマイグレーション設定エンティティを生成することもできます。この設定のみのワークフローは、カスタムフィールドマッピングやデータ変換が必要な複雑なマイグレーションに特に有用です。

主な機能には、複数のデータベース接続方法(直接URLまたはsettings.phpキー)のサポート、HTTPとローカルファイルパス両方をサポートするファイルマイグレーション、プレフィックス付きDrupalインストールのデータベースプレフィックス処理、インポートされたコンテンツと設定を元に戻すための完全なロールバック機能が含まれます。

Features

  • Drupal 6または7からDrupal 8以降へのコンテンツと設定の完全なマイグレーションを実行
  • 直接データベースURL接続とsettings.phpで事前設定されたデータベースキーの両方をサポート
  • リモートサイトからのHTTP経由またはローカルファイルディレクトリ経由でのファイルマイグレーションを処理
  • 生成のみモードでは、カスタマイズ用にmigrate_plus設定エンティティとしてマイグレーションをエクスポート
  • コアマイグレーションプラグインとの競合を防ぐためのカスタマイズ可能なマイグレーションIDプレフィックス
  • インポートされたコンテンツと作成された設定エンティティを削除する完全なロールバック機能
  • コンテンツタイプ固有のマイグレーションのための自動派生マイグレーション展開
  • 詳細なIDマップメッセージログを備えたデバッグモード
  • ドライランテスト用のDrushシミュレートモードとの統合

Use Cases

Drupal 7からの完全なサイトアップグレード

Drupal 7サイトからDrupal 10へのコンテンツ、ユーザー、設定、ファイルの完全なマイグレーションを実行します。新規のDrupal 10サイトをインストールし、データをマイグレーションしたいすべてのモジュールを有効にしてから実行: drush migrate-upgrade --legacy-db-url='mysql://user:pass@host/d7db' --legacy-root=https://old-site.com

カスタマイズされたマイグレーションワークフロー

実行前にレビューとカスタマイズのためのマイグレーション設定を生成します。--configure-onlyで実行し、設定をカスタムモジュールにエクスポートし、YAMLファイルを変更してフィールドマッピングを調整したりプロセスプラグインを追加したりしてから、migrate_toolsを使用して実行: drush migrate-upgrade --legacy-db-url='mysql://user:pass@host/d7db' --configure-only --migration-prefix=custom_

事前設定済みデータベース接続を使用したマイグレーション

旧データベース接続がsettings.phpで既に定義されている場合(認証情報をコマンドラインで渡すべきでない環境で有用)、データベースキーを使用: drush migrate-upgrade --legacy-db-key=legacy_drupal --legacy-root=/mnt/legacy_files

テスト後のマイグレーションロールバック

ステージング環境でテストマイグレーションを実行した後、インポートされたすべてのコンテンツと設定エンティティを完全に削除して新たに開始: drush migrate-upgrade-rollback

プレフィックス付きデータベースを使用したDrupal 6からDrupal 10へのアップグレード

テーブルプレフィックスを使用するDrupal 6サイトからマイグレーション: drush migrate-upgrade --legacy-db-url='mysql://user:pass@host/d6db' --legacy-db-prefix='drupal_' --legacy-root=https://old-site.com

Tips

  • 必要なモジュールのみを有効にした新規インストールのターゲットサイトで常にアップグレードを実行してください
  • 実行前にカスタマイズが必要な複雑なマイグレーションには--configure-onlyを使用してください
  • config_develモジュールはマイグレーションYAML設定の反復作業に役立ちます
  • 本番環境で実行する前にステージング環境でマイグレーションをテストしてください
  • ロールバック機能があっても、マイグレーション実行前にターゲットサイトをバックアップしてください
  • 適切なマイグレーション検出を確保するために、アップグレード実行前にすべての宛先モジュールを有効にしてください
  • マイグレーション中の詳細な進捗状況とエラー情報を確認するには--debugオプションを使用してください
  • マイグレーションIDはコアマイグレーションプラグインとの競合を避けるためデフォルトで'upgrade_'のプレフィックスが付きます

Technical Details

Drush Commands 2
drush migrate:upgrade

ソースDrupal 6または7サイトの設定とコンテンツをターゲットDrupal 8以降のサイトに完全にインポートします。--configure-onlyを使用して、実行せずにマイグレーション設定エンティティを生成することもできます。

drush migrate:upgrade-rollback

以前のアップグレード操作でインポートされたすべてのコンテンツと設定エンティティをロールバックして削除します。アップグレードはmigrate_drupal_ui.performed状態キーで識別されます。注意: サイトタイトルなどの単純な設定変更は、元の値が保存されていないためロールバックされません。

Troubleshooting 6
エラー: You must provide either a --legacy-db-url or --legacy-db-key

コマンドにはデータベース接続情報が必要です。完全なデータベースURLを指定した--legacy-db-url、またはsettings.php($databases配列)で定義された接続を参照する--legacy-db-keyのいずれかを指定してください。

ファイルマイグレーションが失敗し、ファイルが見つからない

--legacy-rootが正しく設定されていることを確認してください。リモートサイトの場合は完全なURL(https://example.com)を使用します。ローカルファイルの場合はDrupalルートへの絶対ファイルシステムパスを使用します。ファイルは標準のDrupalファイルの場所(sites/default/files)でアクセス可能である必要があります。

マイグレーションが既存のコンテンツと競合する

新規インストールのDrupalサイトでmigrate-upgradeを実行してください。コンテンツが既に存在する場合は、最初にmigrate-upgrade-rollbackを実行するか、サイトを再インストールしてください。

大規模なマイグレーション中にメモリ不足

PHPのメモリ制限を増やしてください。--configure-onlyを使用して設定を生成し、migrate_toolsの--limitオプションを使用してバッチでマイグレーションを実行することを検討してください。

--configure-only後に設定エンティティが表示されない

設定はファイルではなくデータベースに保存されます。drush cexを使用してエクスポートするか、configテーブルのmigrate_plus.migration.*エントリを確認してください。

PostgreSQLスキーマベースのデータベースが動作しない

PostgreSQLスキーマを使用する場合、--legacy-db-prefixにスキーマ名と末尾のピリオドを設定してください。例: --legacy-db-prefix='myschema.'

Security Notes 3
  • --legacy-db-urlで渡されたデータベース認証情報はプロセスリストやシェル履歴に表示されます。本番環境ではsettings.phpで--legacy-db-keyを使用してください。
  • --configure-onlyでマイグレーションをエクスポートする際、データベース認証情報がマイグレーショングループ設定に保存される可能性があります。バージョン管理にコミットする前に認証情報を確認して削除してください。
  • このモジュールは機密のユーザー情報を含む可能性のある旧データベースへのアクセスを必要とします。適切なアクセス制御が実施されていることを確認してください。