Moodleは、教育機関がオンライン学習活動を整理するのを支援することを目的とした、非常によく知られている学習管理システムです。ご想像のとおり、2020年にCOVID-19によって引き起こされたオンラインシフトを考えると、そのようなシステムは非常に人気があり、それらのシステムが処理しなければならない負荷は大幅に増加しました。多くの管理者は、Moodleのインストールをバックアップするデータベースのパフォーマンスを改善する方法を考えています。幸い、Moodle 3.9以降を実行している場合は、パフォーマンスを向上させるのに役立ついくつかの組み込みオプションがあります。このブログ投稿では、その方法を紹介します。
まず、単一のデータベースノードを持つMoodleがインストールされていることを前提としています。 Moodleデータベースのパフォーマンスを改善するために実行する可能性のある手順を見てみましょう。もちろん、ここで説明するすべての手順は手動で実行できます。時間を大切にするため、ClusterControlを使用します。
ClusterControlがインストールされていると仮定すると、最初のステップは既存のデータベースノードをインポートすることです。

パスワードなしのキーを使用したSSH接続が確立されている必要があります。 /root/.ssh/id_rsaにあるSSHキーを使用してrootユーザーとして設定しました。

次のステップとして、スーパーユーザーとそのパスワードを定義しました。また、information_schemaクエリ(数万のテーブルがないことがわかっているため)と両方の自動回復オプションを有効にして、ClusterControlが必要に応じてデータベースを回復できるようにしました。
しばらくすると、データベースがクラスターのリストに表示されます。

これで、スレーブを追加してクラスターのスケールアウトを開始できます。マスターでバイナリログが有効になっていることを確認する必要があります。そうでない場合は、ClusterControlから実行できます。バイナリログを有効にするには再起動が必要であるため、負荷が最も低く、理想的にはMoodleプラットフォームのユーザーに注意を向けるときに再起動することをお勧めします。


使用するノードのIP(またはホスト名)を渡しました奴隷として。 ClusterControlは、マスターノードからのデータを使用してプロビジョニングします。バックアップを使用してスレーブをプロビジョニングすることもできますが、これまでClusterControlを使用したバックアップは作成していません。

インストールには数分かかります。進行状況を確認すると、進行状況を確認できます。 ClusterControlのジョブログで。
構成ファイル(config-dist.php)で、「dboptions」アレイの「readonly」セクションを確認できます。その場所で、Moodleがトラフィックを送信するために使用する1つ以上のスレーブノードを定義できます。
'readonly' => [ // Set to read-only slave details, to get safe reads
// from there instead of the master node. Optional.
// Currently supported by pgsql and mysqli variety classes.
// If not supported silently ignored.
'instance' => [ // Readonly slave connection parameters
[
'dbhost' => '10.0.0.132',
'dbport' => '', // Defaults to master port
'dbuser' => '', // Defaults to master user
'dbpass' => '', // Defaults to master password
],
[...],
],
ご覧のとおり、複数のスレーブホストを追加できるため、複数のノードに安全な読み取りを分散でき、ClusterControlから簡単にプロビジョニングして、クラスターの負荷を軽減できます。
>Moodleのより高度で可用性の高いデータベース設定に興味がある場合は、このトピックに関するいくつかのブログ投稿があり、特に、GaleraClusterでMoodleをバックエンドとして利用する方法が説明されています。また、ProxySQLの負荷分散を含むMoodleのより高度なスケーリング手法についても説明しました。