sql >> Databáze >  >> RDS >> MariaDB

Zvýšení výkonu pomocí čtení a zápisu rozdělení databázového provozu s Moodle 3.9

Moodle je velmi dobře známý systém pro řízení výuky, jehož cílem je pomoci vzdělávacím organizacím organizovat jejich online vzdělávací aktivity. Jak si dokážete představit, vzhledem k online posunu v roce 2020 způsobenému COVID-19 se tyto systémy staly velmi populárními a zátěž, kterou musí tyto systémy zvládat, se výrazně zvýšila. Mnoho administrátorů si klade otázku, jak zlepšit výkon databáze, která zálohuje instalaci Moodle. Naštěstí, pokud používáte Moodle 3.9 nebo novější, máte některé vestavěné možnosti, které vám mohou pomoci zvýšit výkon. V tomto příspěvku na blogu vám ukážeme, jak na to.

Především předpokládáme, že máte instalaci Moodle s jedním databázovým uzlem. Pojďme se podívat na kroky, které byste mohli chtít podniknout, abyste zlepšili výkon své databáze Moodle. Všechny kroky, které zde vysvětlíme, lze samozřejmě provést ručně. Budeme k tomu používat ClusterControl, protože si vážíme svého času.

Za předpokladu, že máte nainstalovaný ClusterControl, bude prvním krokem import existujícího databázového uzlu.

Musí být zavedeno připojení SSH pomocí klíče bez hesla. Máme to nastavené jako uživatel root s klíčem SSH umístěným v /root/.ssh/id_rsa.

Jako další krok jsme definovali superuživatele a jeho heslo. Povolili jsme také dotazy information_schema (protože víme, že nemáme desítky tisíc tabulek) a obě možnosti automatického obnovení, takže ClusterControl bude moci v případě potřeby obnovit naši databázi.

Po krátké chvíli se naše databáze zobrazí na seznamu shluků:

Nyní můžeme začít škálovat náš cluster přidáním dalších podřízených jednotek. Měli bychom se ujistit, že hlavní server má povoleny binární protokoly. Pokud ne, lze to provést z ClusterControl. Mějte prosím na paměti, že aktivace binárních protokolů vyžaduje restart, takže to pravděpodobně budete chtít provést v době, kdy je zatížení nejnižší a v ideálním případě dáváte uživatelům vaší platformy Moodle trochu pozornosti.

Předali jsme IP (nebo název hostitele) uzlu, který chceme použít jako otrok. ClusterControl mu poskytne data z našeho hlavního uzlu. Mohli bychom také použít zálohy k zřízení slave zařízení, ale pomocí ClusterControl jsme zatím žádné zálohy nepořizovali.

Instalace bude trvat několik minut, průběh můžeme sledovat pohledem v protokolech úloh v ClusterControl.

Přidání otroka do našeho systému nic nemění. Musíme říci Moodle, aby jej skutečně začal používat. Naštěstí má Moodle funkci, která vám umožní konfigurovat podřízené uzly a poté na ně budou přesměrovány „bezpečné“ zápisy, čímž se sníží zatížení hlavního serveru a zlepší se celkový výkon.

V konfiguračním souboru (config-dist.php) můžete vidět sekci „pouze pro čtení“ pole „dboptions“. Na tomto místě můžete definovat jeden nebo více podřízených uzlů, které bude Moodle používat k odesílání provozu.

  '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

       ],

       [...],

     ],

Jak vidíte, můžeme přidat více než jednoho podřízeného hostitele, což nám umožňuje šířit bezpečné čtení mezi více uzly, které můžete snadno zřídit z ClusterControl a snížit zatížení clusteru.

Pokud máte zájem o pokročilejší a vysoce dostupné nastavení databází pro Moodle, máme několik blogových příspěvků na toto téma, které mimo jiné popisují, jak můžete využít Moodle s Galera Cluster jako backend. Popsali jsme také pokročilejší techniky škálování pro Moodle, včetně vyvažování zátěže ProxySQL.

Sdělte nám své myšlenky a zkušenosti s prací s Moodlem.


  1. Výkon SQL Server 2005 Query

  2. Rozdíl mezi SYSDATE() a NOW() v MariaDB

  3. Více volání array_agg() v jednom dotazu

  4. Získejte nejlepší výsledky pro každou skupinu (v Oracle)