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

Vývoj odolnosti vůči chybám v PostgreSQL

„Je paradoxní, ale pravdivé, říkat, že čím více víme, tím více se stáváme nevědomými v absolutním smyslu, protože pouze osvícením si uvědomujeme svá omezení. Právě jedním z nejuspokojivějších výsledků intelektuální evoluce je neustálé otevírání nových a větších vyhlídek.“ Nikola Tesla

PostgreSQL je úžasný projekt a vyvíjí se úžasnou rychlostí. Zaměříme se na vývoj schopností odolnosti proti chybám v PostgreSQL ve všech jeho verzích s řadou blogových příspěvků.

 PostgreSQL v kostce

PostgreSQL je ze své podstaty odolný vůči chybám. Za prvé, je to pokročilý open source systém pro správu databází a letos oslaví své 20. narozeniny. Jedná se tedy o osvědčenou technologii a má aktivní komunitu, díky které má rychlý vývoj.

PostgreSQL je kompatibilní s SQL (SQL:2011) a plně v souladu s ACID (atomicita, konzistence, izolace, trvanlivost).

PostgreSQL umožňuje fyzickou a logickou replikaci a má vestavěná řešení fyzické a logické replikace. Budeme mluvit o metodách replikace (v dalších příspěvcích na blogu) v PostgreSQL ohledně odolnosti proti chybám.

PostgreSQL umožňuje synchronní a asynchronní transakce, PITR (Point-in-time Recovery) a MVCC (Multiversion concurrency control). Všechny tyto koncepty souvisejí na určité úrovni s odolností proti chybám a já se pokusím vysvětlit jejich účinky a zároveň vysvětlit potřebné termíny a jejich aplikace v PostgreSQL.

PostgreSQL je robustní!

Všechny akce s databází se provádějí v rámci transakcí , chráněné protokolem transakcí která v případě selhání softwaru provede automatickou obnovu po havárii.

Databáze mohou být volitelně vytvořeny pomocí kontrolních součtů datových bloků pomoci diagnostikovat hardwarové závady. Existuje několik mechanismů zálohování s úplnou a podrobnou  PITR pro případ potřeby podrobné obnovy. K dispozici je řada diagnostických nástrojů.

Replikace databáze je podporována nativně. Synchronní replikace může poskytnout více než „5 devíti“ (99,999 procent) dostupnost a ochrana dat, pokud jsou správně nakonfigurovány a spravovány.

Vzhledem k výše uvedeným skutečnostem můžeme snadno prohlásit, že PostgreSQL je robustní!

Tolerance chyb PostgreSQL:WAL

Protokolování před zápisem je hlavním systémem odolnosti proti chybám pro PostgreSQL.

WAL sestává ze série binárních souborů zapsaných do podadresáře pg_xlog datového adresáře PostgreSQL. Každá změna provedená v databázi je nejprve zaznamenána ve WAL, odtud název „write-ahead“ log, jako synonymum pro „transaction log“. Když se transakce potvrdí, výchozím a bezpečným chováním je vynutit uložení záznamů WAL na disk.

Pokud by se PostgreSQL zhroutil, přehraje se WAL, což vrátí databázi do bodu poslední potvrzené transakce a zajistí tak trvanlivost všech změn databáze.

Transakce? Zavázat?

Samotné změny databáze se při potvrzení transakce nezapisují na disk. Tyto změny jsou zapsány na disk někdy později zapisovačem na pozadí nebo kontrolním ukazatelem na dobře vyladěném serveru. (Zkontrolujte výše uvedený popis WAL. )

Transakce jsou základním konceptem všech databázových systémů. Základním bodem transakce je to, že spojuje několik kroků do jediné operace typu všechno nebo nic.

Mezilehlé stavy mezi kroky nejsou viditelné pro ostatní souběžné transakce, a pokud dojde k nějaké chybě, která zabrání dokončení transakce, pak žádný z kroků neovlivní databázi vůbec. PostgreSQL nepodporuje špinavé čtení (transakce čte data zapsaná souběžnou nepotvrzenou transakcí ).

Kontrolní bod

Obnova po havárii přehraje WAL, ale od kterého bodu se začne obnovovat?

Obnova začíná od bodů ve WAL známých jako kontrolní body . Trvání zotavení z havárie závisí na počtu změn v protokolu transakcí od posledního kontrolního bodu. Kontrolní bod je známý bezpečný výchozí bod pro obnovu, protože zaručuje, že všechny předchozí změny v databázi již byly zapsány na disk.

Kontrolní bod může být buď okamžitý nebo naplánováno . Okamžité kontrolní body jsou spouštěny nějakou akcí superuživatele, jako je CHECKPOINT příkaz nebo jiný; o plánovaných kontrolních bodech rozhoduje automaticky PostgreSQL.

Závěr

V tomto příspěvku na blogu jsme uvedli důležité funkce PostgreSQL, které souvisí s odolností proti chybám v PostgreSQL. Zmínili jsme protokolování napřed, transakce, potvrzení, úrovně izolace, kontrolní body a zotavení po havárii. V replikaci PostgreSQL budeme pokračovat v dalším příspěvku na blogu.

Odkazy:

PostgreSQL dokumentace

Administrační kuchařka PostgreSQL 9 – druhé vydání


  1. Rozdíl MySql mezi dvěma časovými razítky ve dnech?

  2. Obnovte výpis na vzdáleném počítači

  3. Vylepšení dělení v PostgreSQL 11

  4. 3 Funkce, které získávají den, měsíc a rok z data v PostgreSQL