Popis replikace a logického dekódování

Dokončeno

Parametr wal_level umožňuje definovat, kolik informací se má zapisovat do protokolu. Existují dvě možnosti: LOGICKÁ NEBO REPLIKA. Replika je výchozí. Tento parametr se nastaví při spuštění serveru.

Vysoká dostupnost

Vysoká dostupnost je služba Azure Database for PostgreSQL, která poskytuje pohotovostní server připravený k převzetí, pokud na vašem živém serveru dojde k selhání. Vysoká dostupnost flexibilního serveru Azure Database for PostgreSQL používá replikaci k automatické aktualizaci pohotovostního serveru o změny dat.

Když nakonfigurujete vysokou dostupnost pro flexibilní server Azure Database for PostgreSQL, primární server se umístí do jedné zóny dostupnosti a pohotovostní server se vytvoří v jiné zóně dostupnosti. Data se replikují z primárního serveru na pohotovostní server pomocí replikace streamování PostgreSQL v synchronním režimu.

Každá zóna dostupnosti se skládá z jednoho nebo více datových center. Zóny dostupnosti mají své vlastní napájecí zdroje, chladicí systémy, síťovou infrastrukturu atd., takže jsou vzájemně nezávislé. Tři kopie datových souborů a souborů WAL (write-ahead log) se ukládají v místně redundantním úložišti v rámci každé zóny dostupnosti a poskytují fyzickou izolaci mezi primárními a pohotovostními servery. Pokud jedna zóna dostupnosti selže, ostatní dvě pravděpodobně budou pokračovat v práci. Zóny dostupnosti v rámci oblasti jsou propojeny rychlými sítěmi fibre s latencí odezvy menší než 2 milisekundy.

Snímek obrazovky znázorňující zóny dostupnosti v rámci oblasti jsou propojeny rychlými sítěmi fibre.

Poznámka:

Ne všechny oblasti mají zóny dostupnosti.

S vysokou dostupností se data duplikují po celou dobu, kdy se databáze používá, a poskytují aktuální kopii originálu. Pokud dojde k chybovému ukončení, repliku je možné použít místo původního stavu. Replikace má primární server a pohotovostní server. Primární server odesílá soubory protokolu WAL do pohotovostního serveru, který přijímá soubory protokolu WAL.

Pohotovostní server hlásí zpět primárnímu serveru informace, jako je poslední protokol zápisu, který napsal, a poslední pozici vyprázdněnou na disk atd. Chcete-li definovat minimální frekvenci příjemce WAL pro odeslání sestavy zpět, nastavte wal_receiver_status_interval parametr. Parametr max_replication_slots definuje maximální počet slotů replikace, které může server podporovat. Pokud je wal_level nastavená na repliku, musí být max_replication_slots alespoň jeden, povolený rozsah hodnot je ale mezi a 0 a 262 143.

Parametr max_wal_senders nastaví maximální počet procesů odesílatele WAL.

Snímek obrazovky znázorňující zónově redundantní architekturu s vysokou dostupností

Monitorují se primární a pohotovostní servery a provádějí se příslušné akce pro nápravu problémů, včetně aktivace převzetí služeb při selhání na pohotovostní server. Následuje seznam zónově redundantních stavů vysoké dostupnosti:

  • Inicializace – v procesu vytvoření nového pohotovostního serveru.
  • Replikace – Replikace dat je v stabilním stavu a v pořádku.
  • V pořádku – pohotovostní režim je aktualizován primárním serverem.
  • Převzetí služeb při selhání – Primární databázový server je v procesu převzetí služeb při selhání do pohotovostního režimu.
  • Odebírání pohotovostního režimu – v procesu odstraňování pohotovostního serveru.
  • Nepovoleno – Zónově redundantní vysoká dostupnost není povolená.

Vysokou dostupnost můžete přidat pro existující databázový server. Pokud povolíte nebo zakážete vysokou dostupnost na živém serveru, proveďte operaci, když dojde k malé aktivitě.

Na webu Azure Portal:

  1. Přejděte na server Azure Database for PostgreSQL.
  2. V části Přehled vyberte aktuální konfiguraci. Zobrazí se oddíl Compute + Storage .
  3. V části Vysoká dostupnost zaškrtněte políčko Vysoká dostupnost (zónově redundantní) a povolte tak vysokou dostupnost. Vysoká dostupnost není pro vrstvu Burstable podporovaná.

Je důležité si uvědomit, že vysoká dostupnost je možnost zotavení po havárii. Pohotovostní server nemůžete použít k žádnému jinému účelu, například k povolení přístupu k databázím jen pro čtení. Replikaci mezi dvěma servery Azure Database for PostgreSQL ale můžete nakonfigurovat pomocí modelu vydavatele a odběratele. Tato konfigurace udržuje dva servery s replikovanými daty mezi nimi. Pak máte úplný přístup k serveru pro předplatitele a můžete databáze používat k libovolnému účelu. Tuto konfiguraci si procvičíte ve cvičení na konci tohoto modulu.

Logické dekódování

Logické dekódování také používá data odesílaná do protokolu s předstihem zápisu. Jak název napovídá, dekóduje položky v zápisu do protokolu dopředu, aby byly srozumitelné. Všechny změny INSERT, UPDATE a DELETE jsou k dispozici pro logické dekódování.

Logické dekódování se může použít pro auditování, analýzu nebo jakýkoli jiný důvod, proč vás může zajímat, co se změnilo a kdy se změnilo.

Logické dekódování extrahuje změny ze všech tabulek v databázi. Liší se od replikace v tom, že nemůže tyto změny odeslat do jiných instancí PostgreSQL. Místo toho rozšíření PostgreSQL poskytuje výstupní modul plug-in pro streamování změn.

Logické dekódování umožňuje dekódování obsahu protokolu dopředu zápisu do snadno pochopitelného formátu, který lze interpretovat bez znalosti struktury databáze. Azure Database for PostgreSQL podporuje logické dekódování pomocí rozšíření wal2json , které je nainstalované na serverech Azure Database for Postgres.

Můžete použít další rozšíření, například rozšíření pglogical, které umožňuje logickou replikaci streamování.

Pokud chcete použít logické dekódování, nastavte v parametrech serveru:

  • wal_level do logického
  • max_replication_slots = 10
  • max_wal_senders = 10

Po provedení těchto změn je nutné server restartovat.

Použití rozšíření pglogical z webu Azure Portal:

  1. Přejděte na server Azure Database for PostgreSQL.
  2. Vyberte parametry serveru a vyhledejte shared_preload_libraries. V rozevíracím seznamu vyberte pglogical.
  3. Vyhledejte azure.extensions. V rozevíracím seznamu vyberte pglogical.
  4. Pokud chcete změny použít, restartujte server.

Musíte také udělit oprávnění správce pro replikaci:

ALTER ROLE <adminname> WITH REPLICATION;

Další informace najdete v online dokumentaci k rozšíření pglogical.

Logické dekódování výstupních dat se mění jako datový proud označovaný jako slot logické replikace.

  1. Každý slot má jeden výstupní modul plug-in, který můžete definovat.
  2. Každý slot poskytuje změny pouze z jedné databáze, ale databáze může mít více slotů.
  3. Každá změna dat se obvykle vygeneruje jednou za slot.
  4. Pokud se PostgreSQL restartuje, slot by mohl znovu vygenerovat změny, které klient potřebuje zpracovat.
  5. Sloty musí být monitorovány. Nekonsumované sloty blokují všechny soubory WAL pro tyto nekonsumované změny. Tato situace může vést k úplnému uložení nebo zabalení ID transakce.