sql >> Database >  >> RDS >> Mysql

Hoe een standalone Moodle te migreren naar een schaalbare configuratie van een geclusterde database

Online leren wint tegenwoordig snel aan kracht sinds de COVID-19-pandemie plaatsvond. De meeste onderwijsinstellingen moeten platforms opzetten voor online leren, en vrijwel alle studenten moeten toegang krijgen tot het platform om te leren en te communiceren met de docenten. Moodle is een van de open source leerbeheersystemen voor online leren, 

Een hoge beschikbaarheid van het Moodle-platform is een must voor instellingen, anders onderbreekt en stopt het het online leerproces. Met veel studenten die tegelijkertijd toegang hebben tot het platform, is de beschikbaarheid en schaalbaarheid belangrijk. Op dit punt moeten onderwijsinstellingen kennis hebben van het platform en de hoge beschikbaarheid en schaalbaarheid van de Moodle. Als u meer wilt weten over het migreren van standalone Moodle naar een schaalbare geclusterde database, kunt u deze richtlijn volgen.

Moodle in de modus "Single Point of Failure"

Het zelfstandige Moodle-platform bestaat uit één server en alles wat op de server is geïnstalleerd (de database en applicatieserver op één plek). Of je hebt 2 servers, die voor de applicatieserver en databaseserver zijn zoals beschreven in de onderstaande afbeelding:

Beide architecturen missen de beschikbaarheid en schaalbaarheid van de service. Vanuit het oogpunt van beschikbaarheid kun je je voorstellen dat als de server crasht, er geen services op de server draaien. Als de applicatieserver crasht of de database crasht, stopt de service met werken.

Aan de andere kant is schaalbaarheid ook belangrijk, meer gebruikers betekent meer verkeer en meer verbindingen met de database. Schaalbaarheid kan worden bereikt door meer bronnen op de servers toe te voegen, of door meer servers toe te voegen zodat het verkeer over de knooppunten kan worden verdeeld, anders zullen de prestaties eronder lijden.

Converteren van zelfstandige naar geclusterde database

Het migreren van uw zelfstandige node naar een geclusterde database kan enige tijd duren, en het is geen risicoloze operatie. Hieronder staan ​​de stappen die we moeten nemen:

  1. Je moet een back-up maken (gebruik mysqldump of xtrabackup).
  2. Installeer database in alle replicadatabaseknooppunten.
  3. Herstel de back-up in de replicaknooppunten.
  4. Verbind het replicaknooppunt met de master.
  5. ProxySQL instellen en behouden voor de databaseknooppunten
  6. Configureer de ProxySQL-load balancers (bijv. creëer hostgroepen, servers, gebruikers).
  7. Wijs de Moodle-configuratie naar het nieuwe virtuele IP-adres.

Hoe ClusterControl kan helpen 

ClusterControl is software voor databasebeheer waarmee u uw open source-database kunt implementeren, bewaken en beheren. We zullen proberen te migreren van een standalone Moodle-architectuur, zoals hieronder weergegeven:

Naar een geclusterde database-architectuur op basis van replicatie:

Je hebt minimaal twee servers nodig voor de database en twee voor de database proxy (we gebruiken ProxySQL als load balancer) en keepalive-service voor het aanbieden van een virtueel IP-adres.

Ervan uitgaande dat we een zelfstandige MySQL-database hebben draaien:

Het toevoegen van meer databaseknooppunten in ClusterControl is heel eenvoudig, u kunt naar de Clustermenu aan de rechterkant van uw cluster en Replicatieslave toevoegen.

Het toont een nieuwe dialoog voor het toevoegen van een nieuwe slaaf, u hoeft alleen maar in te vullen het IP-adres en klik vervolgens op de knop Nieuwe slaaf toevoegen, zoals hieronder weergegeven:

Zoals je kunt zien in de schermafbeelding, is het mogelijk om de slaaf te seeden met gegevens van een bestaande back-up. Dit is om te voorkomen dat alle gegevens uit de draaiende hoofddatabase worden gestreamd. Zodra de slave-database is geïmplementeerd, wordt deze gevuld met mastergegevens en ClusterControl zorgt ervoor dat de slave wordt gesynchroniseerd met de master.

Je kunt de stap herhalen om nog een replicanode toe te voegen.

De nieuwe architectuur zal zijn zoals hieronder getoond:

De volgende stap is het toevoegen van een load balancer vóór de database. Een load balancer zoals ProxySQL is handig omdat het schrijfverzoeken kan omleiden naar de master en de leesverzoeken naar de slaven. Op deze manier verdeel je het Moodle-verkeer. Merk op dat het ook mogelijk is om een ​​master-master setup te doen op basis van Galera Cluster voor MySQL of MariaDB.

We zullen twee load balancers gebruiken voor hoge beschikbaarheid. U kunt in het cluster naar Beheren -> Load Balancers gaan.

Je moet wat informatie invullen, zoals serveradres, beheerderswachtwoord en monitorwachtwoord, voeg de moodle-gebruiker toe aan ProxySQL en klik vervolgens op ProxySQL implementeren. Het zal leiden tot een nieuwe baan. Herhaal de implementatie op het andere load balancer-knooppunt.

Als laatste moet je keepalive configureren voor de load balancers. Ga naar Beheren -> Load Balancers, er is een tabblad voor Keepalive

Je hoeft alleen maar het type load balancer te kiezen en dit toe te voegen aan keepalive . Vul het virtuele IP-adres en de netwerkinterface in. Klik op de knop Keepalive implementeren.

De uiteindelijke architectuur van onze geclusterde, maximaal beschikbare Moodle-database ziet er als volgt uit:

Je hoeft alleen de verbindingsconfiguratie in config.php te wijzigen en naar de dbhost te wijzen naar het virtuele IP-adres dat we hadden geconfigureerd.

Nadat u bent gemigreerd naar een geclusterde database, wilt u misschien wat monitoring in uw Moodle-database plaatsen, waarvoor u deze richtlijn kunt volgen.


  1. Hoe u Execute Immediate met INTO-clausule in Oracle Database gebruikt?

  2. PDO MySQL:voeg meerdere rijen in één query in

  3. Gebruik APP_NAME() om de toepassingsnaam van de huidige sessie in SQL Server op te halen

  4. psycopg2:voeg meerdere rijen in met één query