Moodle è un sistema di gestione dell'apprendimento molto noto che ha lo scopo di aiutare le organizzazioni educative a organizzare le loro attività di apprendimento online. Come puoi immaginare, dato il cambiamento online nel 2020 causato dal COVID-19, tali sistemi sono diventati molto popolari e il carico che tali sistemi devono gestire è aumentato in modo significativo. Molti amministratori si chiedono come migliorare le prestazioni del database che esegue il backup dell'installazione di Moodle. Fortunatamente, se stai utilizzando Moodle 3.9 o versioni successive, hai alcune opzioni integrate che possono aiutarti a migliorare le prestazioni. In questo post del blog ti mostreremo come farlo.
Prima di tutto, assumiamo che tu abbia un'installazione Moodle con un singolo nodo di database. Diamo un'occhiata ai passaggi che potresti voler intraprendere per migliorare le prestazioni del tuo database Moodle. Naturalmente, tutti i passaggi che spieghiamo qui possono essere eseguiti a mano. Useremo ClusterControl per questo dato che apprezziamo il nostro tempo.
Supponendo che ClusterControl sia installato, il primo passo sarà importare un nodo di database esistente.
La connettività SSH che utilizza una chiave senza password deve essere attiva. Lo abbiamo impostato come utente root con una chiave SSH situata in /root/.ssh/id_rsa.
Come passaggio successivo abbiamo definito il superutente e la relativa password. Abbiamo anche abilitato le query information_schema (poiché sappiamo che non abbiamo decine di migliaia di tabelle) ed entrambe le opzioni di ripristino automatico in modo che ClusterControl possa recuperare il nostro database se necessario.
Dopo un breve momento il nostro database compare nell'elenco dei cluster:
Ora possiamo iniziare a ridimensionare il nostro cluster aggiungendo più slave. Dovremmo assicurarci che il master abbia i log binari abilitati. In caso contrario, può essere eseguito da ClusterControl. Tieni presente che l'abilitazione dei log binari richiede il riavvio, quindi probabilmente vorrai farlo in un momento in cui il carico è il più basso e, idealmente, dare qualche dritta agli utenti della tua piattaforma Moodle.
Abbiamo passato l'IP (o hostname) del nodo che vogliamo usare come schiavo. ClusterControl fornirà i dati dal nostro nodo master. Potremmo anche utilizzare i backup per eseguire il provisioning di uno slave, ma finora non abbiamo eseguito alcun backup utilizzando ClusterControl.
L'installazione richiederà un paio di minuti, possiamo seguire l'avanzamento guardando nei registri di lavoro in ClusterControl.
L'aggiunta di uno slave al nostro sistema non fa alcuna differenza. Dobbiamo dire a Moodle di iniziare effettivamente a usarlo. Fortunatamente, Moodle ha una funzionalità che ti consente di configurare i nodi slave e quindi le scritture "sicure" verranno reindirizzate su di essi, riducendo il carico sul master e migliorando le prestazioni complessive.
Nel file di configurazione (config-dist.php) puoi vedere la sezione "sola lettura" dell'array "dboptions". In quella posizione puoi definire uno o più nodi slave che verranno utilizzati da Moodle per inviare il traffico.
'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
],
[...],
],
Come puoi vedere, possiamo aggiungere più di un host slave, consentendoci di distribuire le letture sicure su più nodi di cui puoi facilmente eseguire il provisioning da ClusterControl e ridurre il carico sul cluster.
Se sei interessato a configurazioni di database più avanzate e altamente disponibili per Moodle, abbiamo diversi post sul blog su questo argomento che descrivono, tra gli altri, come utilizzare Moodle con Galera Cluster come back-end. Abbiamo anche descritto le tecniche di ridimensionamento più avanzate per Moodle, che coinvolgono il bilanciamento del carico ProxySQL.
Facci sapere i tuoi pensieri e la tua esperienza sul lavoro con Moodle.