MyISAMからInnoDBへの移行

移動先: 案内, 検索


MySQLストレージエンジンの移行に関して、このページはMoodleをMySQLデータベースで運用している管理者のみ対象としています。

なぜInnoDBに移行するのですか?

確実に動作して、大きなサイトでのパフォーマンスの良さ、およびデータ整合性機能 (トランザクション) があるため、MyISAMよりもInnoDBの使用を強くお勧めします。

あなたがMoodleウェブサービスを使用したい場合 (例えばモバイルアプリ) 、または将来的に追加される可能性のある新機能に関して、InnoDBは必須となります。

MySQL設定

テーブルタイプを変更する前に:

  • InnoDBが有効にされているか確認してください。MySQLにログインして、コマンド「SHOW ENGINES」を実行してください。InnoDBのサポートが「Yes」または「DEFAULT」になっていることを確認してください。
  • 必要であれば、innodb_file_per_tableを設定してくださいこの設定は大規模サイトに有用ですが、新しく作成したテーブルのみ適用されるため、既存のテーブルには影響を及ぼしません。

Moodleフォーラムに投稿された様々な方法 (どれか1つを選択してください)

  • ウェブページからinnodbスクリプトを実行してください: http://www.YOUR_MOODLE_SITE/admin/tool/innodb (v2.2.1 あなたのサイトに管理者としてログインする必要があります - 大規模サイトではタイムアウトの問題が生じる可能性があります)。Moodle 2.xの前のバージョンでは、スクリプトは次の場所にあります: http://www.YOUR_MOODLE_SITE/admin/innodb.php
  • 「admin/cli/mysql_engine.php」のCLIスクリプトを使用する (シェルアクセスが必要です。config.phpには1つのMoodleインスタンスのみを設定して、タイムアウトが生じないよう、PHPを設定してください)
  • PHPMyAdminを使用して「構造」表示に入った後、「操作」タブをクリックしてください。そして、ストレージエンジンのパラメータを探してください。多くのテーブルがあるため、これは退屈な作業です。[1]
  • データベースダンプを実行してください (例 mysqldump moodle_database > dump.SQL)。そして、エディタまたはsed/perl/awkコマンドを使用することで、「InnoDB」を「MyISAM」に置換してください。最後にバックアップデータをサーバにリストアしてください (例 mysql < dump.SQL または同等のコマンド)。この方法を使用する場合、インプットおよびアウトプットが同じファイルエンコードになるよう、十分に注意してください。
  • 次の処理に従ってください (英語) - https://sites.google.com/site/moodlemayhem/tcea2011-moodle-server-setup-basics/moodleacidtrip
  • 次のPHPスクリプトを使用してください (1.9および2.0/2.2でテスト済み) http://noveckg.blogspot.com/2012/04/moodle-php-script-to-convert-mysql.html

関連情報

Using Moodleフォーラムディスカッション: