MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Amélioration des performances en utilisant le fractionnement en lecture-écriture du trafic de la base de données avec Moodle 3.9

Moodle est un système de gestion de l'apprentissage très connu qui vise à aider les organisations éducatives à organiser leurs activités d'apprentissage en ligne. Comme vous pouvez l'imaginer, étant donné le changement en ligne en 2020 causé par le COVID-19, ces systèmes sont devenus très populaires et la charge que ces systèmes doivent gérer a considérablement augmenté. De nombreux administrateurs se demandent comment améliorer les performances de la base de données qui sauvegarde l'installation de Moodle. Heureusement, si vous utilisez Moodle 3.9 ou une version ultérieure, vous disposez d'options intégrées qui peuvent vous aider à améliorer les performances. Dans cet article de blog, nous vous montrerons comment procéder.

Tout d'abord, nous supposons que vous avez une installation Moodle avec un seul nœud de base de données. Jetons un coup d'œil aux étapes que vous voudrez peut-être suivre pour améliorer les performances de votre base de données Moodle. Bien entendu, toutes les étapes que nous expliquons ici peuvent être réalisées à la main. Nous allons utiliser ClusterControl pour cela car nous apprécions notre temps.

En supposant que ClusterControl est installé, la première étape consistera à importer un nœud de base de données existant.

La connectivité SSH utilisant une clé sans mot de passe doit être en place. Nous l'avons configuré en tant qu'utilisateur root avec une clé SSH située dans /root/.ssh/id_rsa.

A l'étape suivante, nous avons défini le superutilisateur et son mot de passe. Nous avons également activé les requêtes information_schema (car nous savons que nous n'avons pas des dizaines de milliers de tables) et les deux options de récupération automatique afin que ClusterControl puisse récupérer notre base de données si nécessaire.

Après un bref instant notre base de données s'affiche sur la liste des clusters :

Maintenant, nous pouvons commencer à faire évoluer notre cluster en ajoutant plus d'esclaves. Nous devons nous assurer que le maître a activé les journaux binaires. Sinon, cela peut être fait à partir du ClusterControl. Veuillez garder à l'esprit que l'activation des journaux binaires nécessite un redémarrage, vous voudrez donc probablement le faire à un moment où la charge est la plus faible et, idéalement, en informant les utilisateurs de votre plate-forme Moodle.

Nous avons transmis l'IP (ou le nom d'hôte) du nœud que nous voulons utiliser comme esclave. ClusterControl le provisionnera avec les données de notre nœud maître. Nous pourrions également utiliser des sauvegardes pour provisionner un esclave, mais nous n'avons pas effectué de sauvegardes à l'aide de ClusterControl jusqu'à présent.

L'installation prendra quelques minutes, nous pouvons suivre la progression en regardant dans les journaux de travail dans ClusterControl.

L'ajout d'un esclave à notre système ne fait aucune différence. Nous devons dire à Moodle de commencer à l'utiliser. Heureusement, Moodle dispose d'une fonctionnalité qui vous permet de configurer des nœuds esclaves, puis les écritures "sûres" leur seront redirigées, réduisant la charge sur le maître et améliorant les performances globales.

Dans le fichier de configuration (config-dist.php), vous pouvez voir la section "readonly" du tableau "dboptions". À cet endroit, vous pouvez définir un ou plusieurs nœuds esclaves qui seront utilisés par Moodle pour envoyer le trafic.

  '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

       ],

       [...],

     ],

Comme vous pouvez le voir, nous pouvons ajouter plus d'un hôte esclave, ce qui nous permet de répartir les lectures sécurisées sur plusieurs nœuds que vous pouvez facilement approvisionner à partir de ClusterControl et réduire la charge sur le cluster.

Si vous êtes intéressé par des configurations de base de données plus avancées et hautement disponibles pour Moodle, nous avons plusieurs articles de blog sur ce sujet décrivant, entre autres, comment vous pouvez utiliser Moodle avec Galera Cluster comme backend. Nous avons également décrit les techniques de mise à l'échelle les plus avancées pour Moodle, impliquant l'équilibrage de charge ProxySQL.

Faites-nous part de vos réflexions et de votre expérience de travail avec Moodle.