MyISAMからInnoDBへの移行
提供:MoodleDocs
(追加のツールは、管理者設定の他の場所にあります)
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
関連情報
- MySQL Engines: MyISAM vs. InnoDB Tag1 Consultingによる記事 - 英語
- MyISAM mysqldumpからInnoDBへの簡単な移行方法 - 英語
Using Moodleフォーラムディスカッション: