sql >> Databáze >  >> RDS >> PostgreSQL

Výzvy škálování databáze Moodle PostgreSQL

Moodle je nejoblíbenější systém pro řízení výuky (LMS), který umožňuje pedagogům vytvářet vlastní webové stránky s kurzy nebo obsahem, které rozšiřují výuku. Tyto druhy platforem jsou stále důležitější, aby vám umožnily pokračovat ve vzdělávání na dálku, když tradiční vzdělávací systém není k dispozici nebo jen jako jeho doplněk, takže nárůst návštěvnosti nebo uživatelé vyžadují škálování vašeho prostředí, aby byla zajištěna nízká odezva. čas.

Škálovatelnost je vlastnost systému/databáze zvládat rostoucí množství požadavků přidáním zdrojů. Existují různé přístupy pro škálování vaší databáze v závislosti na způsobu, jakým ji potřebujete škálovat, a v produkčním prostředí s největší pravděpodobností nejsou žádoucí dlouhé prostoje, takže byste to měli také vzít v úvahu.

V tomto blogu se podíváme na to, jaké možnosti škálování jsou k dispozici a jak snadno škálovat vaši databázi Moodle PostgreSQL, aniž by to ovlivnilo váš běžící systém.

Horizontální škálování a Vertikální škálování

Existují dva hlavní způsoby škálování databáze:

  • Horizontální škálování (scale-out):Provádí se přidáním více databázových uzlů vytvářejících nebo zvětšujících databázový klastr.
  • Vertikální škálování (scale-up):Provádí se přidáním dalších hardwarových prostředků (CPU, Paměť, Disk) do existujícího databázového uzlu.

Pro horizontální měřítko , můžete přidat další databázové uzly jako pohotovostní uzly. Může vám pomoci zlepšit výkon čtení vyvažující provoz mezi uzly. V tomto případě budete muset přidat nástroj pro vyrovnávání zatížení, abyste distribuovali provoz do správného uzlu v závislosti na zásadách a stavu uzlu. Měli byste také zvážit přidání dvou nebo více uzlů load balanceru, abyste se vyhnuli jedinému bodu selhání, a použití nástroje jako „Keepalived“, abyste zajistili dostupnost. Keepalived je služba, která vám umožňuje konfigurovat virtuální IP adresu v rámci aktivní/pasivní skupiny serverů. Tato virtuální IP adresa je přiřazena aktivnímu serveru (aktivnímu Load Balancer). Pokud tento server selže, IP adresa se automaticky migruje na „sekundární“ pasivní server, což mu umožní pokračovat v práci se stejnou IP adresou transparentním způsobem pro systémy.

Pro vertikální změnu měřítka , může být potřeba změnit některé konfigurační parametry, aby PostgreSQL mohl používat nový nebo lepší hardwarový prostředek. Podívejme se na některé z těchto parametrů z dokumentace PostgreSQL.

  • work_mem:Určuje množství paměti, které bude využito interními operacemi řazení a hashovacími tabulkami před zápisem do dočasných souborů na disku. Několik běžících relací může provádět takové operace současně, takže celková použitá paměť může být mnohonásobkem hodnoty work_mem.
  • maintenance_work_mem:Určuje maximální množství paměti, které bude využito operacemi údržby, jako je VACUUM, CREATE INDEX a ALTER TABLE ADD FOREIGN KEY. Větší nastavení může zlepšit výkon vysávání a obnovy výpisů databáze.
  • autovacuum_work_mem:Určuje maximální množství paměti, které může využít každý pracovní proces autovacuum.
  • autovacuum_max_workers:Určuje maximální počet procesů autovakuování, které mohou být spuštěny najednou.
  • max_worker_processes:Nastavuje maximální počet procesů na pozadí, které může systém podporovat. Zadejte limit procesu, jako je vysávání, kontrolní body a další úlohy údržby.
  • max_parallel_workers:Nastavuje maximální počet pracovníků, které může systém podporovat pro paralelní operace. Paralelní pracovníci jsou přebíráni ze skupiny pracovních procesů vytvořených předchozím parametrem.
  • max_parallel_maintenance_workers:Nastavuje maximální počet paralelních pracovníků, které lze spustit jediným příkazem nástroje. V současnosti je jediným příkazem paralelního nástroje, který podporuje použití paralelních pracovníků, CREATE INDEX, a to pouze při vytváření indexu B-stromu.
  • effective_cache_size:Nastavuje předpoklad plánovače o efektivní velikosti diskové mezipaměti, která je k dispozici pro jeden dotaz. To je zohledněno v odhadech nákladů na použití indexu; vyšší hodnota zvyšuje pravděpodobnost použití indexových skenů, nižší hodnota zvyšuje pravděpodobnost použití sekvenčního skenování.
  • shared_buffers:Nastavuje množství paměti, kterou databázový server používá pro vyrovnávací paměti sdílené paměti. Pro dobrý výkon je obvykle potřeba nastavení výrazně vyšší než minimum.
  • temp_buffers:Nastavuje maximální počet dočasných vyrovnávacích pamětí používaných každou relací databáze. Jedná se o místní vyrovnávací paměti používané pouze pro přístup k dočasným tabulkám.
  • effective_io_concurrency:Nastavuje počet souběžných diskových I/O operací, které PostgreSQL očekává, že mohou být provedeny současně. Zvýšením této hodnoty se zvýší počet I/O operací, které se jakákoli jednotlivá relace PostgreSQL pokusí spustit paralelně. V současnosti toto nastavení ovlivňuje pouze skenování haldy bitmap.
  • max_connections:Určuje maximální počet souběžných připojení k databázovému serveru. Zvýšení tohoto parametru umožňuje PostgreSQL spouštět více backendových procesů současně.

Výzvou zde může být, jak zjistit, zda potřebujete škálovat svou databázi Moodle a jakým způsobem, a odpovědí je Monitoring.

Monitorování PostgreSQL pro Moodle

Škálování databáze je složitý proces, takže byste měli zkontrolovat některé metriky, abyste mohli určit nejlepší strategii pro její škálování.

Můžete sledovat využití procesoru, paměti a disku, abyste zjistili, zda došlo k nějakému problému s konfigurací nebo zda skutečně potřebujete škálovat databázi. Pokud například vidíte vysoké zatížení serveru, ale aktivita databáze je nízká, pravděpodobně není nutné ji škálovat, stačí pouze zkontrolovat konfigurační parametry, aby odpovídaly vašim hardwarovým prostředkům.

Kontrola místa na disku používaného uzlem PostgreSQL na databázi vám může pomoci potvrdit, zda potřebujete více disku nebo dokonce oddíl tabulky. Chcete-li zkontrolovat místo na disku používané databází/tabulkou, můžete použít některé funkce PostgreSQL jako pg_database_size nebo pg_table_size.

Na straně databáze byste měli zkontrolovat:

  • Počet připojení
  • Spouštění dotazů
  • Využití indexu
  • Nafouknutí
  • Prodleva replikace

Mohou to být jasné metriky pro potvrzení, zda je potřeba škálování vaší databáze.

ClusterControl jako škálovací a monitorovací systém

ClusterControl vám může pomoci vyrovnat se s oběma způsoby škálování, které jsme zmínili dříve, a sledovat všechny nezbytné metriky k potvrzení požadavku na škálování.

Pokud ClusterControl ještě nepoužíváte, můžete jej nainstalovat a nasadit nebo importovat svou aktuální databázi PostgreSQL výběrem možnosti „Importovat“ a postupujte podle pokynů, abyste mohli využívat všechny funkce ClusterControl, jako jsou zálohy, automatické převzetí služeb při selhání, výstrahy, monitorování a další.

Horizontální měřítko

Pokud v případě horizontálního škálování přejdete na akce clusteru a vyberete „Přidat slave replikace“, můžete buď vytvořit novou repliku od začátku, nebo přidat existující databázi PostgreSQL jako repliku.

Podívejme se, jak může být přidání nového replikačního slave zařízení opravdu snadným úkolem.

Jak vidíte na obrázku, stačí si vybrat svého mistra serveru, zadejte IP adresu vašeho nového podřízeného serveru a port databáze. Poté si můžete vybrat, zda chcete, aby ClusterControl nainstaloval software za vás, a zda má být replikační podřízená jednotka synchronní nebo asynchronní.

Tímto způsobem můžete přidat tolik replik, kolik chcete, a rozložit mezi ně provoz čtení pomocí nástroje pro vyrovnávání zatížení, který můžete také implementovat pomocí ClusterControl.

Pokud nyní přejdete na akce clusteru a vyberete „Přidat nástroj pro vyrovnávání zatížení“, můžete nasadit nový nástroj pro vyrovnávání zatížení HAProxy nebo přidat stávající.

A pak ve stejné sekci nástroje pro vyrovnávání zatížení můžete přidat Keepalived služba, která bude spuštěna na uzlech nástroje pro vyrovnávání zatížení pro zlepšení vašeho prostředí s vysokou dostupností.

Po přidání nástroje Load Balancer nebo použití virtuální IP adresy se službou Keepalived místo, musíte aktualizovat konfiguraci Moodle, abyste mohli používat nový koncový bod databáze. Za tímto účelem přejděte do kořenového adresáře Moodle a upravte soubor config.php s novou IP adresou:

$CFG->dbhost    = 'IP_ADDRESS';

$CFG->dbname    = 'moodle';

$CFG->dbuser    = 'mdluser';

$CFG->dbpass    = '********';

$CFG->prefix    = 'mdl_';

$CFG->dboptions = array (

  'dbpersist' => 0,

  'dbport' => PORT,

  'dbsocket' => '',

);

Ujistěte se, že máte k databázi přístup přes Load Balancer nebo virtuální IP adresu, nebo pokud potřebujete aktualizovat svůj soubor pg_hba.conf PostgreSQL, abyste to umožnili.

Vertikální měřítko

Pro vertikální škálování můžete pomocí ClusterControl monitorovat uzly databáze jak z operačního systému, tak ze strany databáze. Můžete zkontrolovat některé metriky, jako je využití procesoru, paměť, připojení, nejčastější dotazy, spuštěné dotazy a ještě více. Můžete také aktivovat sekci Dashboard, která vám umožní zobrazit metriky podrobněji a přívětivějším způsobem.

Z ClusterControl můžete také provádět různé úlohy správy, jako je Reboot Host, Rebuild Replication Slave nebo Promote Slave jedním kliknutím.

Závěr

Škálování vaší Moodle PostgreSQL databáze může být obtížný úkol, protože budete potřebovat vědět, jak je třeba škálovat a jak to udělat, aniž by to ovlivnilo systémy. Mít dobrý monitorovací systém je prvním krokem k tomu, abyste věděli, kdy a jak potřebujete škálovat svou databázi Moodle. Přidání nástroje Load Balancer vám pomůže vyhnout se zbytečným prostojům a také zlepší vysokou dostupnost ve vašem prostředí LMS.

Všechny tyto věci, které jsme zmínili, lze provést pomocí ClusterControl, což usnadní práci. ClusterControl poskytuje celou řadu funkcí, jako je monitorování, upozornění, automatické převzetí služeb při selhání, zálohování, obnovení v určitém okamžiku, ověřování záloh, škálování a další.


  1. Volitelný příkaz INSERT v řetězci transakcí pomocí NodeJS a Postgres

  2. Jak mohu vyřešit ORA-00911:chyba neplatného znaku?

  3. SQL Server 2008 – Jak vrátím uživatelsky definovaný typ tabulky z funkce s hodnotou tabulky?

  4. Analýza smrti o tisíc snižuje pracovní zátěž