データベースの破損をチェックする方法
データベースの破損は通常、ハードウェア(特にディスクベース)の障害の結果として、またはディスクがいっぱいになったときに発生します。典型的な症状はログインの失敗で、次のメッセージが表示されます。
Session Replace: Table './moodle/mdl_sessions2' is marked as crashed and should be repaired
この問題は主にMySQLに影響を与えるようです。
MySQL
この問題は、mysqlcheckコマンドを使用して修復できます(入力するコマンドは太字で、データベース名は 'moodle' であり、そのタイプはMySQLであると想定しています)。
#mysqlcheck -u moodleuser -p --auto-repair moodle Enter password: moodle.adodb_logsql OK moodle.mdl_assignment OK moodle.mdl_assignment_submissions OK ... moodle.mdl_log error : Table './moodle/mdl_log' is marked as crashed and should be repaired ... moodle.mdl_sessions2 error : Table './moodle/mdl_sessions2' is marked as crashed and should be repaired Repairing tables moodle_18_latest.mdl_log OK moodle_18_latest.mdl_sessions2 OK
mysqlcheckコマンドを実行するときは、mysqlデータベースサーバが実行されている必要があります。テーブルに問題がある場合、自動修復オプションは上記のようにテーブルを修正します。修復プロセスが完了するまでに長い時間がかかる場合があることに注意してください。コマンドを再実行して、すべて問題がないことを再確認してください。
個々のMoodleテーブルはMySQLAdmin/phpMyAdminを使用してチェックできます
個々のMoodleテーブルは、MySQL Admin/PHPMyAdminを使用して次のように修復できます。
- データベースセクションで、Moodleデータベースを選択します。
- SQLタブをクリックし、データベースmoodleでSQLクエリ/クエリを実行する フィールドタイプに
REPAIR TABLE mdl_tablename
と入力します。 - 移動ボタンをクリックします。
たとえば、Moodleログテーブルを修復するには、 REPAIR TABLE mdl_log
Moodleログテーブルをチェックするのと同様の方法で、 CHECK TABLE MDL_LOG
ます。これは、OKと言うか、何が悪いのかを教えてくれます。たとえば、テーブルがクラッシュしたとマークされています と表示される場合があります。
その他のデータベース
上で述べたように、この問題は通常、MySQLでのみ発生します。
関連項目
- フォーラムディスカッション moodleデータベース最適化スクリプト
- データベースの修復と最適化に関するパフォーマンスドキュメント
- MySQLのデータベース破損の修復に関するデータベースジャーナルの記事