MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Leistungssteigerung durch Verwendung der Lese-Schreib-Aufteilung des Datenbankverkehrs mit Moodle 3.9

Moodle ist ein sehr bekanntes Lernmanagementsystem, das Bildungsorganisationen dabei helfen soll, ihre Online-Lernaktivitäten zu organisieren. Wie Sie sich vorstellen können, wurden solche Systeme angesichts der durch COVID-19 verursachten Online-Verschiebung im Jahr 2020 sehr beliebt und die Belastung, die diese Systeme bewältigen müssen, hat erheblich zugenommen. Viele Administratoren fragen sich, wie sie die Leistung der Datenbank verbessern können, die die Moodle-Installation sichert. Glücklicherweise haben Sie, wenn Sie Moodle 3.9 oder höher ausführen, einige integrierte Optionen, die Ihnen helfen können, die Leistung zu steigern. In diesem Blogbeitrag zeigen wir Ihnen, wie es geht.

Zunächst einmal gehen wir davon aus, dass Sie eine Moodle-Installation mit einem einzelnen Datenbankknoten haben. Werfen wir einen Blick auf die Schritte, die Sie möglicherweise unternehmen möchten, um die Leistung Ihrer Moodle-Datenbank zu verbessern. Natürlich können alle Schritte, die wir hier erklären, auch von Hand ausgeführt werden. Wir werden dafür ClusterControl verwenden, da wir unsere Zeit schätzen.

Angenommen, Sie haben ClusterControl installiert, besteht der erste Schritt darin, einen vorhandenen Datenbankknoten zu importieren.

Die SSH-Verbindung mit einem passwortlosen Schlüssel muss vorhanden sein. Wir haben es als Root-Benutzer mit einem SSH-Schlüssel eingerichtet, der sich in /root/.ssh/id_rsa.

befindet

Als nächsten Schritt haben wir den Superuser und sein Passwort definiert. Wir haben auch information_schema-Abfragen aktiviert (da wir wissen, dass wir nicht Zehntausende von Tabellen haben) und beide Optionen zur automatischen Wiederherstellung, damit ClusterControl unsere Datenbank bei Bedarf wiederherstellen kann.

Nach einem kurzen Moment zeigt unsere Datenbank auf der Liste der Cluster:

Jetzt können wir damit beginnen, unseren Cluster zu vergrößern, indem wir weitere Slaves hinzufügen. Wir sollten sicherstellen, dass der Master binäre Protokolle aktiviert hat. Wenn nicht, kann dies über die ClusterControl erfolgen. Bitte denken Sie daran, dass die Aktivierung von Binärlogs einen Neustart erfordert, daher möchten Sie dies wahrscheinlich in einer Zeit tun, in der die Auslastung am niedrigsten ist, und idealerweise den Benutzern Ihrer Moodle-Plattform einige Hinweise geben.

Wir haben die IP (oder den Hostnamen) des Knotens übergeben, den wir verwenden möchten als Sklave. ClusterControl wird es mit den Daten unserer Masternode versorgen. Wir könnten auch Backups verwenden, um einen Slave bereitzustellen, aber wir haben bisher keine Backups mit ClusterControl erstellt.

Die Installation dauert ein paar Minuten, wir können den Fortschritt verfolgen, indem wir nachsehen in den Job-Logs in ClusterControl.

Das Hinzufügen eines Sklaven zu unserem System macht keinen Unterschied. Wir müssen Moodle sagen, dass es tatsächlich damit beginnen soll, es zu verwenden. Glücklicherweise verfügt Moodle über eine Funktion, mit der Sie Slave-Knoten konfigurieren können, und dann werden die „sicheren“ Schreibvorgänge an sie umgeleitet, wodurch die Belastung des Masters verringert und die Gesamtleistung verbessert wird.

In der Konfigurationsdatei (config-dist.php) sehen Sie den Abschnitt „schreibgeschützt“ des Arrays „dboptions“. An dieser Stelle können Sie einen oder mehrere Slave-Knoten definieren, die von Moodle zum Senden des Datenverkehrs verwendet werden.

  '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

       ],

       [...],

     ],

Wie Sie sehen können, können wir mehr als einen Slave-Host hinzufügen, wodurch wir die sicheren Lesevorgänge auf mehrere Knoten verteilen können, die Sie einfach von ClusterControl aus bereitstellen und die Belastung des Clusters reduzieren können.

Wenn Sie an fortgeschritteneren, hochverfügbaren Datenbank-Setups für Moodle interessiert sind, haben wir mehrere Blog-Posts zu diesem Thema, die unter anderem beschreiben, wie Sie Moodle mit Galera Cluster als Backend verwenden können. Wir haben auch die fortgeschritteneren Skalierungstechniken für Moodle beschrieben, einschließlich ProxySQL-Lastausgleich.

Teilen Sie uns Ihre Gedanken und Erfahrungen zur Arbeit mit Moodle mit.