MyISAMからInnoDBへの移行
MySQLストレージエンジンの移行に関するものなので、このページはMySQLデータベースでMoodleを使用している管理者にのみ適用されます。
なぜInnoDBに移行するのですか?
Moodle 2.9以降、MyISAMはサポートされなくなりました。 InnoDBは、より堅牢に機能し、大規模サイトでより優れたパフォーマンスを発揮し、より優れたデータ整合性機能(トランザクション)を可能にします。
MySQLの設定
テーブルタイプを変更する前に、次のことを行ってください。
- InnoDBが有効になっていることを確認します。 MySQLにログインして、コマンドSHOW ENGINESを実行します。 InnoDBのサポートに "YES"または "DEFAULT"が表示されていることを確認してください。
- 必要ならばinnodb_file_per_tableを設定してください 。 この設定は大規模なインストールには便利ですが、新しく作成されたテーブルにのみ影響し、遡及的に適用することはできません。
Moodleフォーラムで説明されているさまざまな方法(いずれかを選択してください)
- 推奨:CLIスクリプト( php admin / cli / mysql_engine.php)を使用してください - シェルへのアクセスを必要とし、config.phpには1つのmoodleインスタンスしかなければなりません
- 次の操作を実行している間、他のユーザーがサーバーにアクセスしていないことを確認してください。 Moodleをメンテナンスモードにしてください。管理者として、innodbスクリプトをWebページhttp://www.YOUR_MOODLE_SITE/admin/tool/innodb/index.phpとして実行します。 (大規模なデータベースでは、タイムアウトの問題が発生する可能性があります。)[mysqld]という見出しの下の/etc/my.cnfに次のステートメントを追加します。 "binlog_format = ROW"(引用符なし)、そしてMySQLを停止/再起動します。このステートメントがないと、moodleがMySQLに書き込もうとしたときにdmlwriteexceptionエラーが発生します。 Moodleをメンテナンスモードから外します。
- PHPMyAdminを使用してテーブルの構造図に入り、[操作]タブをクリックします。ストレージエンジンのパラメータを探します。テーブルの数が多いため、これは面倒な作業です[1]。
- データベースダンプ(mysqldump moodle_database> dump.SQLなど)を実行し、エディタまたはsed / perl / awkコマンドを使用して検索/置換し、MyISAMをInnoDBに置き換えます。最後に、サーバーにリストアします。 (例えば、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エンジン: Tag1コンサルティングによるMyISAM vs. InnoDBの記事
- MyISAM mysqldumpからInnoDBへの簡単な移行
- すべてのMyISAMテーブルをInnoDBに変換するための簡単なSQLステートメント
Moodleフォーラムディスカッションを使用する: