Moodle1.9系からMoodle2.1系への切替において、ユーザプロファイルなどのユーザ情報を2.1系に移行したいと手順を模索してみました。
ご承知の通り2.1系のマイグレーションについては、純正のモジュールのみを利用している場合はともかく、1.9系しか現状サポートされていないモジュールを利用している場合はサイト全体のアップグレード、またはコースのアップグレードがスムーズに行えない場合が多いです。
本学もこのような状況ですので、まずはユーザプロファイルなどのユーザ情報のみを移行可能であるかどうか検証してみました。(コースは移行しない)
1) データ移行作業元のサイトを作成
既存のDBをダンプし、新たに別のDBにダンプファイルをインポートして複製します。
このDBを参照する1.9系の最新版のMoodleを、運用中のMoodleとは別のURLで別途構築します。
データディレクトリも別途作成し、運用中のMoodleデータディレクト配下のuser のみをコピーして参照するように設定しておきます。
標準モジュール以外は一切インストールしないでおきます。
元々運用していた1.9系のバージョンによっては、一度ここで1.9系最新版へのバージョンアップが実行されます。
以後、運用中のDBおよび運用中のMoodleのURLには一切アクセスしません。
2) 上記で作成した作業元DBより、mdl_user、およびmdl_userで始まる名前のテーブルをエクスポートします。
3) 一旦作業元DBを削除し、新たに空の同名のDBを作成します。
4) ブラウザで作業元サイトにアクセスし、新規のインストールプロセスを実行します。
5) 作業元DBの、mdl_userおよびmdl_userで始まる名前のテーブルを空にします。
6) 2)でエクスポートしたSQLを作業元DBにインポートします。
7) 作業元DB全体をダンプファイルにエクスポートします。
8) Moodle2.1の最新版を構築(ブラウザでのインストールプロセスは実行しないでおく)した別サーバ(PHPなどの関係で、別サーバを立てることが多いのではないかと思います)に、7)の作業元DBのダンプファイル、および作業元サイトのデータディレクトリ配下のuserディレクトリをコピーします。
9) 作業元DBのダンプファイルのデータベース照合順序にutf8_general_ciが含まれる場合、この後のアップグレードプロセスに失敗することがあるため、全てのテーブルのデータベース照合順序をutf_unicode_ciに変換しておきます。参考
(データベース照合順序の変換にてエラーが発生したユーザが数名(5000名中10名弱)いましたので、該当するレコードはここで削除しました)
config.phpは最低限のものを用意しておきます。
$CFG->passwordsaltmainは、作業元サイトと同一にしておきます。
10) Moodle2.1を構築したURLにブラウザでアクセスし、アップグレートプロセスを実行します。標準モジュール以外は含まれていない状態なので、短時間で完了します。
11) 新しいMoodle2.1サイトにアクセスし、ユーザプロファイルが移行されていることを確認します。
なお、この手順では当然ながらユーザのロール、コースへの登録情報、コース等、ユーザ以外のデータは移行されません。
多々不具合がある手順かもしれませんが、ここまでたどり着くのに3日ほどかかりました。何かのご参考になれば幸いです。