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

Nejlepší PG Clustering řešení vysoké dostupnosti pro PostgreSQL

Pokud váš systém spoléhá na PostgreSQL a hledáte klastrová řešení pro vysokou dostupnost, chceme vás předem upozornit, že jde o složitý úkol, který však není nesplnitelný.

S ohledem na vaše požadavky na odolnost proti chybám zde jsou některá vysoce dostupná řešení clusterů, ze kterých si můžete vybrat, která vám mohou pomoci.

PostgreSQL nativně nepodporuje žádné multimaster clusteringové řešení, jako je MySQL nebo Oracle. Nicméně mnoho komerčních a komunitních produktů nabízí tuto implementaci, včetně replikace a vyvažování zátěže pro PostgreSQL.

Pro začátek si zopakujme některé základní pojmy:

Co je vysoká dostupnost?

Vysoká dostupnost označuje dobu, po kterou je služba dostupná, a je obvykle definována úrovní výkonu dohodnuté firmou.

Redundance je základem vysoké dostupnosti; v případě incidentu můžete pokračovat v provozu a přistupovat k systémům bez problémů.

Nepřetržité obnovení

Když dojde k incidentu a budete muset obnovit zálohu a poté použít protokoly WAL (Write-Ahead Logging), doba obnovy by byla velmi dlouhá a nebyla by příliš dostupná.

Pokud však máte zálohy a protokoly archivované na nouzovém serveru, můžete protokoly použít, jakmile dorazí. Pokud by se protokoly odesílaly a uplatňovaly každou minutu, pohotovostní základna by byla v nepřetržitém obnovování a měla by zastaralý stav na výrobu po dobu nejvýše jedné minuty.

Pohotovostní databáze

Myšlenka záložní databáze je uchovávat kopii produkční databáze, která má vždy stejná data a je připravena k použití v případě incidentu.

Pohotovostní databázi lze klasifikovat několika způsoby.

Podle povahy replikace:

  • Fyzické pohotovostní režimy:Bloky disku jsou zkopírovány.

  • Logické pohotovostní režimy:Streamování změn dat.

Podle synchronicity transakcí:

  • Asynchronní:Existuje možnost ztráty dat.

  • Synchronní:Neexistuje žádná možnost ztráty dat; Potvrzení v hlavním systému čekají na odpověď pohotovostního režimu.

Podle použití:

  • Teplé pohotovostní režimy:Nepodporují připojení.

  • Žhavé pohotovostní režimy:Podpora připojení pouze pro čtení.

Shluky

Cluster je skupina hostitelů, kteří spolupracují a jsou považováni za jeden. To poskytuje způsob, jak dosáhnout horizontální škálovatelnosti a schopnosti zpracovat více práce přidáním serverů.

Dokáže odolat selhání uzlu a pokračovat v transparentní práci. V závislosti na tom, co je sdíleno, existují dva modely clusteru:

  • Sdílené úložiště:Všechny uzly přistupují ke stejnému úložišti se stejnými informacemi.

  • Nesdílí nic:Každý uzel má své vlastní úložiště, které může, ale nemusí mít stejné informace jako ten druhý uzly, v závislosti na struktuře našeho systému.

Pojďme se nyní podívat na některé možnosti shlukování, které máme v PostgreSQL.

Distribuované replikované blokové zařízení

DRBD je modul jádra Linuxu, který implementuje synchronní replikaci bloků pomocí sítě. Ve skutečnosti neimplementuje cluster a nezpracovává převzetí služeb při selhání nebo monitorování. K tomu potřebujete doplňkový software, například Corosync + Pacemaker + DRBD.

Příklad:

  • Corosync:Zpracovává zprávy mezi hostiteli.

  • Pacemaker:Spouští a zastavuje služby a zajišťuje, že běží pouze na jednom hostiteli.

  • DRBD:Synchronizuje data na úrovni blokových zařízení.

ClusterControl

ClusterControl je software pro správu a automatizaci databázových clusterů bez agentů. Pomáhá nasazovat, monitorovat, spravovat a škálovat váš databázový server/klastr přímo z jeho uživatelského rozhraní. Zvládne většinu administrativních úloh potřebných k údržbě databázových serverů nebo klastrů.

S ClusterControl můžete:

  • Nasaďte samostatné, replikované nebo seskupené databáze na technologickém zásobníku dle vašeho výběru.

  • Automatizujte přepnutí při selhání, obnovu a každodenní úlohy jednotně napříč polyglotními databázemi a dynamickými infrastrukturami.

  • Vytvářejte plné nebo přírůstkové zálohy ručně nebo je naplánujte.

  • Provádějte jednotné a komplexní monitorování celé vaší databáze a infrastruktury serveru v reálném čase.

  • Jednou akcí můžete snadno přidat nebo odebrat uzel.

  • Klonování clusteru do jiného datového centra/poskytovatele cloudu

Pokud máte incident s PostgreSQL, může být váš pohotovostní uzel automaticky povýšen na primární.

Je to kompletní nástroj, který nabízí kompletní správu životního cyklu a automatizaci prostřednictvím jediné skleněné tabule. ClusterControl také poskytuje bezplatnou 30denní zkušební verzi, takže ji můžete bez závazků vyhodnotit.

Rubyrep

Rubyrep je řešení poskytující asynchronní, multimaster, multiplatformní replikaci (implementovanou v Ruby nebo JRuby) a multi-DBMS (MySQL nebo PostgreSQL).

Je založen na spouštěčích a nepodporuje DDL, uživatele ani granty. Jeho primárním cílem je jednoduchost použití a správy.

Některé funkce zahrnují:

  • Jednoduchá konfigurace

  • Jednoduchá instalace

  • Nezávislý na platformě, nezávislý na designu tabulky.

Pgpool-II

Pgpool-II je middleware, který funguje mezi servery PostgreSQL a databázovým klientem PostgreSQL.

Některé funkce zahrnují:

  • Soubor připojení

  • Replikace

  • Vyrovnávání zátěže

  • Automatické převzetí služeb při selhání

  • Paralelní dotazy

Může být konfigurován nad streamovací replikací:

Bucardo

Bucardo nabízí asynchronní kaskádovou replikaci master-slave, založenou na řádcích, používající spouštěče a řazení do fronty v databázi, a asynchronní replikaci master-master, založenou na řádcích, využívající spouštěče a přizpůsobené řešení konfliktů.

Bucardo vyžaduje vyhrazenou databázi a běží jako démon Perl, který komunikuje s touto databází a všemi ostatními databázemi zapojenými do replikace. Může běžet jako multi-master nebo multi-slave.

Replikace master-slave zahrnuje jeden nebo více zdrojů směřujících k jednomu nebo více cílům. Zdroj musí být PostgreSQL, ale cíle mohou být PostgreSQL, MySQL, Redis, Oracle, MariaDB, SQLite nebo MongoDB.

Některé funkce zahrnují:

  • Vyrovnávání zátěže

  • Otroci nejsou omezeni a lze je zapsat

  • Částečná replikace

  • Replikace na vyžádání (změny mohou být přeneseny automaticky nebo podle potřeby)

  • Podřízené jednotky lze "předhřát" pro rychlé nastavení

Nevýhody:

  • Nelze zpracovat DDL

  • Nelze zpracovat velké objekty

  • Nelze inkrementálně replikovat tabulky bez jedinečného klíče

  • Nebude fungovat na verzích starších než Postgres 8

Postgres-XC

Postgres-XC je projekt s otevřeným zdrojovým kódem, který poskytuje škálovatelné, synchronní, symetrické a transparentní clusterové řešení PostgreSQL s možností zápisu. Jedná se o kolekci těsně propojených databázových komponent, které lze nainstalovat na více než jeden hardware nebo virtuální stroj.

Škálovatelnost zápisu znamená, že Postgres-XC lze nakonfigurovat s tolika databázovými servery, kolik chcete, a zvládnout mnohem více zápisů (aktualizace příkazů SQL) ve srovnání s tím, co dokáže jediný databázový server.

Můžete mít více než jeden databázový server, ke kterému se klienti připojují, což poskytuje jediný konzistentní pohled na databázi v celém clusteru.

Jakákoli aktualizace databáze z libovolného databázového serveru je okamžitě viditelná všem dalším transakcím spuštěným na různých masterech.

Transparentní znamená, že se nemusíte starat o to, jak jsou vaše data interně uložena na více než jednom databázovém serveru.

Můžete nakonfigurovat Postgres-XC tak, aby běžel na více serverech. Vaše data jsou uložena distribuovaným způsobem, rozdělena na oddíly nebo replikována, jak si sami zvolíte pro každou tabulku. Když zadáte dotazy, Postgres-XC určí, kde jsou uložena cílová data, a odešle odpovídající dotazy na servery obsahující cílová data.

Citus

Citus je doplňková náhrada PostgreSQL s vestavěnými funkcemi vysoké dostupnosti, jako je automatické sdílení a replikace. Citus rozdělí vaši databázi a replikuje několik kopií každého fragmentu napříč shlukem komoditních uzlů. Pokud se uzel v clusteru stane nedostupným, Citus transparentně přesměruje jakékoli zápisy nebo dotazy na jeden z dalších uzlů, ve kterých je uložena kopie zasaženého fragmentu.

Některé funkce zahrnují:

  • Automatické logické sharding

  • Vestavěná replikace

  • Replikace datového centra pro obnovu po havárii

  • Tolerance chyb uprostřed dotazu s pokročilým vyrovnáváním zátěže

Můžete prodloužit dobu provozu svých aplikací v reálném čase poháněných PostgreSQL a minimalizovat dopad selhání hardwaru na výkon. Toho můžete dosáhnout pomocí vestavěných nástrojů s vysokou dostupností, které minimalizují nákladné ruční zásahy náchylné k chybám.

PostgresXL

PostgresXL je řešení klastrování s více hlavními servery, které nesdílí nic a dokáže transparentně distribuovat tabulku na sadě uzlů a provádět dotazy paralelně s těmito uzly. Má další komponentu nazvanou Global Transaction Manager (GTM), která poskytuje globálně konzistentní pohled na cluster.

PostgresXL je horizontálně škálovatelný SQL databázový cluster s otevřeným zdrojovým kódem, dostatečně flexibilní, aby zvládl různé databázové zátěže:

  • Úlohy náročné na zápis OLTP

  • Business Intelligence vyžadující paralelismus MPP

  • Provozní úložiště dat

  • Obchod klíč-hodnota

  • Geografický prostor GIS

  • Prostředí se smíšenou zátěží

  • Prostředí hostovaná poskytovatelem s více nájemci

Součásti:

  • Globální sledování transakcí (GTM):Global Transaction Monitor zajišťuje konzistenci transakcí v rámci celého clusteru.

  • Koordinátor:Koordinátor spravuje uživatelské relace a komunikuje s GTM a datovými uzly.

  • Datový uzel:Datový uzel je místo, kde jsou uložena skutečná data.

Zabalení

K implementaci vašeho prostředí vysoké dostupnosti pro PostgreSQL je k dispozici mnoho dalších produktů, ale musíte být opatrní:

  • Nové produkty, nedostatečně otestované

  • Ukončené projekty

  • Omezení

  • Licenční náklady

  • Velmi složité implementace

  • Nebezpečná řešení

Při výběru řešení, které použijete, vezměte v úvahu také svou infrastrukturu. Pokud máte pouze jeden aplikační server, bez ohledu na to, jak moc jste nakonfigurovali vysokou dostupnost databází, pokud aplikační server selže, nebudete přístupní. Musíte dobře analyzovat jednotlivé body selhání v infrastruktuře a pokusit se je vyřešit.

Vezmete-li v úvahu tyto body, můžete najít clusterové řešení s vysokou dostupností, které se přizpůsobí vašim potřebám a požadavkům, bez bolesti hlavy. Pokud hledáte další zdroje HA pro vaši databázi PG, podívejte se na tento příspěvek o nasazení PostgreSQL pro vysokou dostupnost.

Chcete-li mít aktuální informace o řešeních a osvědčených postupech pro správu databází, sledujte nás na Twitteru a LinkedIn a přihlaste se k odběru našeho zpravodaje.


  1. Jak vložit časové razítko do Oracle?

  2. Obnova databáze Oracle

  3. Jak EXTRACT() funguje v MariaDB

  4. Funkce DECOMPOSE() v Oracle