sql >> Databasteknik >  >> RDS >> Mysql

Hur man migrerar fristående Moodle till en klustrad databas skalbar installation

Online-lärande nuförtiden har snabbt fått fäste sedan covid-19-pandemin inträffade. De flesta utbildningsinstitutionerna måste skapa plattformar för onlineinlärning, och i stort sett alla studenter måste få tillgång till plattformen för att lära sig och interagera med lärarna. Moodle är ett av utbildningshanteringssystemen med öppen källkod för onlineinlärning, 

Att ha hög tillgänglighet för Moodle-plattformen är ett måste för institutioner, annars kommer det att avbryta och stoppa inlärningsprocessen online. Med många studenter som har tillgång till plattformen samtidigt är tillgängligheten och skalbarheten viktig. Vid denna tidpunkt behöver utbildningsinstitutioner ha kunskap och arkitektur för plattformen hög tillgänglighet och skalbarhet för Moodle. Om du vill veta mer om hur du migrerar fristående Moodle till en Clustered Database Scalable kan du följa den här riktlinjen.

Moodle i läge "Single Point of Failure"

Den fristående Moodle-plattformen består av en server och allt installerat på servern (databasen och applikationsservern på ett ställe). Eller så har du 2 servrar, vilket är för applikationsservern och databasservern enligt beskrivningen i bilden nedan:

Båda arkitekturerna saknar tillgänglighet och skalbarhet för tjänsten. Ur tillgänglighetsperspektivet kan du föreställa dig att om servern kraschar har du inga tjänster som körs på servern. Om applikationsservern kraschar eller databasen kraschar slutar tjänsten att fungera.

Å andra sidan är skalbarhet också viktigt, fler användare betyder mer trafik och fler kopplingar till databasen. Skalbarhet kan uppnås genom att lägga till fler resurser i servrarna, eller lägga till fler servrar så att trafiken kan fördelas över noderna, annars kommer prestandan att bli lidande.

Konvertera från fristående till klustrad databas

Att migrera din fristående nod till en klustrad databas kan ta lite tid, och det är inte en riskfri operation. Nedan följer stegen vi måste ta:

  1. Du måste ta en säkerhetskopia (använd mysqldump eller xtrabackup).
  2. Installera databasen i alla replikdatabasnoder.
  3. Återställ säkerhetskopian till replikanoderna.
  4. Anslut replikanoden till mastern.
  5. Ställ in ProxySQL och håll liv framför databasnoderna
  6. Konfigurera ProxySQL belastningsutjämnare (t.ex. skapa värdgrupper, servrar, användare).
  7. Rikta Moodle-konfigurationen till den nya virtuella IP-adressen.

Hur ClusterControl kan hjälpa till 

ClusterControl är programvara för databashantering som hjälper dig att distribuera, övervaka och hantera din databas med öppen källkod. Vi kommer att försöka migrera från fristående Moodle-arkitektur som visas nedan:

Till en  klustrad databasarkitektur baserad på replikering:

Du behöver minst två servrar för databasen och två för databasen proxy (vi kommer att använda ProxySQL som belastningsutjämnare) och Keepalive-tjänst för att betjäna en virtuell IP-adress.

Förutsatt att vi har en fristående MySQL-databas som körs:

Att lägga till fler databasnoder i ClusterControl är väldigt enkelt, du kan gå till Klustermeny till höger om ditt kluster och Lägg till replikeringsslav.

Den kommer att visa en ny dialog för att lägga till ny slav, du behöver bara fylla i IP-adressen och klicka sedan på knappen Lägg till ny slav som visas nedan:

Som du kan se på skärmdumpen är det möjligt att seeda slaven med data från en befintlig säkerhetskopia. Detta för att undvika att strömma all data från den pågående huvuddatabasen. När slavdatabasen väl har distribuerats kommer den att fyllas med masterdata och ClusterControl ser till att slaven synkroniserar med mastern.

Du kan upprepa steget för att lägga till ytterligare en repliknod.

Den nya arkitekturen blir som visas nedan:

Nästa steg är att lägga till en lastbalanserare framför databasen. En lastbalanserare som ProxySQL är användbar eftersom den kan omdirigera skrivförfrågningar till mastern och läsbegäranden till slavarna. På detta sätt distribuerar du Moodle-trafiken. Observera att det också är möjligt att göra en master-master-inställning baserad på Galera Cluster för MySQL eller MariaDB.

Vi kommer att använda två lastbalanserare för hög tillgänglighet. Du kan gå till Hantera -> Lastbalanserare i klustret.

Du måste fylla i viss information som serveradress, administratörs- och övervakningslösenord, lägg till moodle-användaren i ProxySQL och klicka sedan på Distribuera ProxySQL. Det kommer att utlösa ett nytt jobb. Upprepa driftsättningen på den andra lastbalanseringsnoden.

Sista sak är att konfigurera keepalived för lastbalanserarna. Gå till Hantera -> Lastbalanserare, det finns en flik för Keepalive

Du behöver bara välja belastningsbalanseringstyp och lägga till den i Keepalived . Fyll i den virtuella IP-adressen och nätverksgränssnittet. Klicka på knappen Distribuera Keepalive.

Den slutliga arkitekturen för vår klustrade högt tillgängliga Moodle-databas kommer att vara som visas nedan:

Du behöver bara ändra anslutningskonfigurationen i config.php och peka på dbhost till den virtuella IP-adress som vi hade konfigurerat.

När du har migrerat till Clustered Database kanske du vill lägga till lite övervakning i din Moodle-databas, som du kan följa den här riktlinjen.


  1. Hur man stoppar eller stryper SST-drift på ett Galera-kluster

  2. alternativ till listagg i Oracle?

  3. CROSS/YTTRE ANSÖK i MySQL

  4. Postgresql UUID stöds av Hibernate?