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

関連情報

Moodleフォーラムディスカッションを使用する: