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

Jak optimalizovat logickou replikaci PostgreSQL

Logical Replication nebo Pglogical je replikační mechanismus na úrovni tabulky, založený na WAL, který replikuje data konkrétních tabulek mezi dvěma instancemi PostgreSQL. Zdá se, že dochází k záměně mezi „pglogic“ a „Logical Replication“. Oba poskytují stejný druh replikačního mechanismu s určitými rozdíly ve funkcích a možnostech. Logická replikace je zavedena v PostgreSQL-10 jako vestavěná funkce na rozdíl od pglogical, což je rozšíření. „Pglogical“ s nepřetržitým vývojem zůstává jedinou možností pro implementaci logické replikace pro prostředí používající PostgreSQL verze starší než 10. Nakonec budou všechny funkce, které jsou součástí pglogical, součástí logické replikace. Jinými slovy, z pglogical (rozšíření) se stala logická replikace (vestavěná funkce). Základní výhodou logické replikace je, že není třeba instalovat/vytvářet žádná rozšíření, což je naopak výhodné pro prostředí, kde je instalace rozšíření omezena.

Tento blog se zaměří na optimalizaci logické replikace. To znamená, že optimalizační tipy a techniky zdůrazněné v tomto blogu budou platit pro pglogickou i logickou replikaci.

Logická replikace je replikace založená na WAL, která je první svého druhu. Jako správce databází by to byl mnohem spolehlivější a výkonnější mechanismus replikace ve srovnání s jinými řešeními replikace na základě spouštěčů. Změny provedené v tabulkách v části pglogické replikace jsou replikovány v reálném čase prostřednictvím záznamů WAL, díky čemuž je vysoce efektivní a není složitá. Všechny ostatní replikační mechanismy na trhu jsou založeny na spouštěči, což může představovat problémy s výkonem a údržbou. S příchodem logické replikace je závislost na replikaci založené na spouštěči téměř pryč.

Existují další blogy, které vysvětlují, jak nakonfigurovat logickou replikaci docela podrobně.

V tomto blogu se zaměříme na to, jak optimalizovat logickou replikaci.

Optimalizace logické replikace

Chování „Logické replikace“ je dosti podobné jako „Streamová replikace“, jediný rozdíl je v tom, že streamovaná replikace replikuje celou databázi, zatímco Logická replikace replikuje pouze jednotlivé tabulky. Při výběru konkrétních jednotlivých tabulek k replikaci je třeba předvídat faktory / problémy.

Podívejme se na faktory ovlivňující logickou replikaci.

Faktory ovlivňující výkon logické replikace

Optimalizace logické replikace je důležitá pro zajištění bezproblémové replikace dat bez jakýchkoliv přerušení. Před nastavením je třeba předvídat faktory. Pojďme se na ně podívat:

  • Typ dat uložených v tabulkách, která mají být replikována
  • Jak transakčně aktivní jsou tabulky (součást replikace)
  • Musí se počítat s kapacitou infrastruktury
  • Konfigurace parametrů musí být provedena optimálně

Všechny výše uvedené faktory ovlivňují logickou replikaci ve větší míře. Pojďme se na ně podívat podrobně.

Datové typy logické replikace PostgreSQL

Je důležité porozumět typu dat uložených v tabulce. Pokud tabulková část replikace ukládá velké textové nebo binární objekty a narazí na vysoký počet transakcí, může se replikace zpomalit kvůli vysokému využití prostředků infrastruktury. Kapacita infrastruktury musí být adekvátní, aby zvládla tak složitou a velkou replikaci dat.

Jak jsou aktivní tabulky transakčně součástí replikace

Při replikaci vysoce transakčně aktivních tabulek může replikace zaostávat v synchronizaci kvůli problémům s výkonem I/O, zablokování atd., což je třeba vzít v úvahu. Díky tomu nemusí prostředí produkční databáze vypadat zdravěji. Pokud je počet replikovaných tabulek vysoký a data jsou replikována na více serverů, pak může docházet k vysokému využití CPU a je zapotřebí větší počet CPU (nebo CPU jader).

Kapacita infrastruktury

Před zvažováním logické replikace jako řešení je důležité zajistit dostatečnou kapacitu infrastruktury databázových serverů. Pokud existuje velký počet replikovaných tabulek, pak musí být k dispozici dostatek CPU pro provedení úlohy replikace.

Při replikaci velkého počtu tabulek zvažte jejich rozdělení do skupin a paralelní replikaci. Opět to bude vyžadovat více CPU, aby bylo k dispozici pro replikaci. Pokud jsou změny dat v replikovaných tabulkách časté a vysoké, může to mít dopad také na výkon replikace.

Stáhněte si Whitepaper Today Správa a automatizace PostgreSQL s ClusterControlZjistěte, co potřebujete vědět k nasazení, monitorování, správě a škálování PostgreSQLStáhněte si Whitepaper

Optimalizace parametrů pro logickou replikaci

Parametry nakonfigurované pro fungování logické replikace musí být optimálně vyladěny, aby se zajistilo, že se replikace nepřeruší.

Nejprve se podívejme na parametry potřebné k jeho konfiguraci:

wal_level=’logical’
max_wal_senders=10                     # greater than number of subscribers (or replicas)
max_replication_slots=10              # greater than number of subscribers (or replicas)
max_worker_processes=10           # greater than number of subscribers (or replicas)
max_logical_replication_workers  # greater than number of subscribers (or replicas)
max_sync_workers_per_subscription # depends on number of tables being replicated

Ladění max_wal_senders

max_wal_senders musí být vždy větší než počet replik. Pokud jsou data replikována na více webů, do hry vstupuje více max_wal_senders. Je tedy důležité zajistit, aby byl tento parametr nastaven na optimální číslo.

Ladění max_replication_slotů

Obecně jsou všechny změny dat, ke kterým dochází v tabulkách, zapsány do souborů WAL v pg_xlog / pg_wal, které se nazývají záznamy WAL. Proces odesílatele Wal vyzvedl tyto záznamy WAL (patřící k replikovaným tabulkám) a odeslal je replikám a proces wal_receiver na webu repliky by tyto změny použil v uzlu předplatitele.

Soubory WAL jsou odstraněny z umístění pg_xlog/pg_wal, kdykoli nastane kontrolní bod. Pokud jsou soubory WAL odstraněny ještě předtím, než jsou změny aplikovány na uzel odběratele, replikace by se přerušila a zaostávala. V případě, že předplatitelský uzel zaostává, replikační slot by zajistil zachování všech souborů WAL, které předplatitel potřebuje k synchronizaci s poskytovatelem. Doporučuje se nakonfigurovat jeden replikační slot pro každý předplatitelský uzel.

Ladění max_worker_processes

Je důležité mít nakonfigurovaný optimální počet pracovních procesorů. To závisí na maximálním počtu procesů, které může server mít. To je možné pouze v prostředí s více CPU. Max_worker_processes zajistí, že se vytvoří více procesů, aby byla práce provedena rychleji díky využití více jader CPU. Při replikaci dat pomocí logické replikace může tento parametr pomoci generovat více pracovních procesů pro rychlejší replikaci dat. Existuje specifický parametr nazvaný max_logical_worker_processes, který zajistí, že se ke kopírování dat použije více procesů.

Ladění max_logical_worker_processes

Tento parametr určuje maximální počet logických pracovních procesů potřebných k provedení replikace a synchronizace dat tabulky. Tato hodnota je převzata z max_worker_processes, která by měla být vyšší než tato hodnota parametru. Tento parametr je velmi výhodný při replikaci dat na více serverů v prostředí s více CPU. Výchozí hodnota je 4. Maximální hodnota závisí na tom, kolik pracovních procesů systém podporuje.

Ladění max_sync_workers_per_subscription

Tento parametr určuje maximální počet synchronizačních procesů požadovaných na jedno předplatné. Proces synchronizace probíhá během počáteční synchronizace dat a pro zajištění rychlejšího průběhu lze použít tento parametr. V současné době lze pro každou tabulku nakonfigurovat pouze jeden proces synchronizace, což znamená, že zpočátku lze paralelně synchronizovat více tabulek. Výchozí hodnota je 2. Tato hodnota je vybrána z hodnoty max_logical_worker_processes.

To jsou parametry, které je třeba vyladit, aby byla zajištěna efektivní a rychlejší logická replikace. Další parametry, které také ovlivňují logickou replikaci, jsou následující.

wal_receiver_timeout, wal_receiver_status_interval and wal_retrieve_retry_interval.

Tyto parametry nemají žádný vliv na uzel poskytovatele.

Závěr

Tabulky specifické pro replikaci jsou běžným požadavkem, který vzniká ve velkých a složitých databázových systémech. Může to být pro účely obchodního výkaznictví nebo datového skladu. Jako správce databází věřím, že logická replikace těmto účelům velmi vyhovuje díky své snadné implementaci s menší složitostí. Konfigurace a ladění logické replikace vyžaduje značné množství plánování, architektury a testování. Množství dat replikovaných v reálném čase musí být vyhodnoceno, aby byl zajištěn účinný a zdánlivě nenáročný systém replikace. Abych to uzavřel, databáze běžící v PostgreSQL-10, logická replikace je správná cesta a pro databáze běžící v PostgreSQL verze <10 je možností pglogical.


  1. Jak POW() funguje v MariaDB

  2. Metoda sběru:Funkce COUNT v databázi Oracle

  3. Sloučit překrývající se časové intervaly

  4. Automatické zvýšení na částečném primárním klíči s Entity Framework Core