K's Atelier

個人的な学習記録

非同期バックアップ強制終了法(Moodle)

Moodleには非同期のバックアップ機能があるのだが,バックアップ中に画面遷移すると,非同期のバックアップが「帰ってこない」・・・。内部処理を見たら,画面のPHPがバックアップ処理の終了を待っているようだ。なので画面側プロセスが消えてしまうとステータス遷移できなくなる。こうなるといつまでたっても「非同期バックアップ中」となって,該当コースの作業ができなくなる。

解除手順

まさかのデータベース書き換え。

まずは止まっているバックアップ処理を確認する。対象テーブルは_backup_controllers。""の部分は自分がMoodleをインストールしたときに指定している。デフォルトは"mdl"。

> select itemid,operation,execution,userid,status,timecreated from mdl_backup_controllers where execution=2;
+--------+-----------+-----------+--------+--------+-------------+
| itemid | operation | execution | userid | status | timecreated |
+--------+-----------+-----------+--------+--------+-------------+
|    999 | backup    |         2 |      2 |    700 |  1629854977 |
+--------+-----------+-----------+--------+--------+-------------+
1 row in set (0.00 sec)

テーブル直接編集は危ないので,念のためバックアップしておく。itemidは適切に指定すること。

>  create table tmp_mdl_backup_controllers as select * from mdl_backup_controllers where itemid = 999;
Query OK, 2 rows affected (0.06 sec)
Records: 2  Duplicates: 0  Warnings: 0

該当のレコードを削除する。

> delete from mdl_backup_controllers where itemid = 999;
Query OK, 2 rows affected (0.01 sec

感想

絶対ましな方法があるはずなのだが,どうしても見つからない。非同期処理の管理UIが無いと,普通の人には手が出せない。Moodleはちょっと凝ったことをしようとすると極端に情報が少ないのが弱点。英語でも技術情報が少ないので,日本語になるともっと少ない。

参考

Backup and restore