Moodle är ett mycket välkänt Learning Management System som är avsett att hjälpa utbildningsorganisationer att organisera sina onlineinlärningsaktiviteter. Som du kan föreställa dig, med tanke på onlineskiftet 2020 som orsakades av covid-19, blev sådana system mycket populära och belastningen som dessa system måste hantera har ökat avsevärt. Många administratörer undrar hur man kan förbättra prestandan för databasen som säkerhetskopierar Moodle-installationen. Lyckligtvis, om du kör Moodle 3.9 eller senare har du några inbyggda alternativ som kan hjälpa dig att öka prestandan. I det här blogginlägget kommer vi att visa dig hur du gör.
Först och främst antar vi att du har en Moodle-installation med en enda databasnod. Låt oss ta en titt på de steg du kanske vill ta för att förbättra prestandan för din Moodle-databas. Naturligtvis kan alla steg som vi förklarar här utföras för hand. Vi kommer att använda ClusterControl för det eftersom vi värdesätter vår tid.
Förutsatt att du har ClusterControl installerat, kommer det första steget att vara att importera en befintlig databasnod.
SSH-anslutningen med en lösenordslös nyckel måste vara på plats. Vi har konfigurerat det som en root-användare med en SSH-nyckel som finns i /root/.ssh/id_rsa.
Som nästa steg definierade vi superanvändaren och dess lösenord. Vi har även aktiverat informationsschema-frågor (som vi vet att vi inte har tiotusentals tabeller) och båda autoåterställningsalternativen så att ClusterControl kommer att kunna återställa vår databas om det behövs.
Efter en kort stund visas vår databas på listan över kluster:
Nu kan vi börja skala ut vårt kluster genom att lägga till fler slavar. Vi bör se till att mastern har binära loggar aktiverade. Om inte, kan det göras från ClusterControl. Tänk på att aktivering av binära loggar kräver omstart så du vill antagligen göra det i en tid då belastningen är som lägst och, idealiskt, ger användarna av din Moodle-plattform en aning.
Vi skickade IP (eller värdnamn) för noden vi vill använda som slav. ClusterControl kommer att tillhandahålla den med data från vår huvudnod. Vi skulle också kunna använda säkerhetskopior för att tillhandahålla en slav, men vi har inte tagit några säkerhetskopior med ClusterControl än så länge.
Installationen tar ett par minuter, vi kan följa utvecklingen genom att titta i jobbloggarna i ClusterControl.
Att lägga till en slav i vårt system gör ingen skillnad. Vi måste säga till Moodle att faktiskt börja använda det. Lyckligtvis har Moodle en funktion som låter dig konfigurera slavnoder och sedan kommer de "säkra" skrivningarna att omdirigeras till dem, vilket minskar belastningen på mastern och förbättrar den övergripande prestandan.
I konfigurationsfilen (config-dist.php) kan du se sektionen "skrivskyddad" i arrayen "dboptions". På den platsen kan du definiera en eller flera slavnoder som kommer att användas av Moodle för att skicka trafiken till.
'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
],
[...],
],
Som du kan se kan vi lägga till mer än en slavvärd, vilket gör att vi kan sprida de säkra läsningarna över flera noder som du enkelt kan tillhandahålla från ClusterControl och minska belastningen på klustret.
Om du är intresserad av mer avancerade, mycket tillgängliga databasinställningar för Moodle, har vi flera blogginlägg om detta ämne som bland annat beskriver hur du kan använda Moodle med Galera Cluster som backend. Vi beskrev också de mer avancerade skalningsteknikerna för Moodle, som involverar ProxySQL-belastningsbalansering.
Berätta för oss dina tankar och erfarenheter av att arbeta med Moodle.