Sobes.tech
Middle

Hogyan állítanád be a PostgreSQL biztonsági mentéseit csak belső mechanizmusokkal, külső eszközök, például a vim használata nélkül?

sobes.tech MI

Válasz az MI-től

Természetesen, kész vagyok válaszolni erre a kérdésre.

A PostgreSQL biztonsági mentéseinek létrehozásához kizárólag belső mechanizmusokat használva a következő megközelítéseket alkalmaznám:

  1. pg_dump és pg_dumpall:

    • A pg_dump egy adatbázis logikai mentését készíti.
    • A pg_dumpall az összes adatbázis logikai mentését készíti, beleértve a rendszerobjektumokat (szerepek, táblaterületek).
    • Szöveges fájlt hoznak létre SQL utasításokkal a helyreállításhoz vagy bináris archív fájlt.
    • Előnyök: Egyszerű használat, rugalmasság a kimeneti formátum kiválasztásában.
    • Hátrányok: Nagy adatbázisok esetén a logikai mentésből való helyreállítás sok időt vehet igénybe. Nem alkalmas folyamatos biztonsági mentésekhez (PITR).

    A pg_dump használatának példája:

    # A 'mydatabase' adatbázis logikai mentése plain szöveg formátumban:
    pg_dump mydatabase > mydatabase_backup.sql
    
    # A 'mydatabase' adatbázis logikai mentése custom formátumban:
    pg_dump -Fc mydatabase > mydatabase_backup.dump
    
    # Minden adatbázis mentése:
    pg_dumpall > all_databases_backup.sql
    
  2. Folyamatos archíválás és Point-in-Time Recovery (PITR):

    • Tartalmazza a wal_level, archive_mode és archive_command paramétereket a postgresql.conf fájlban.
    • Lehetővé teszi a folyamatos WAL archív fájlok áramlását.
    • A PITR-hez alapvető mentés (pl. pg_basebackup segítségével készített) és WAL fájlok sorozata szükséges.
    • Előnyök: Bármikor visszaállítható, minimális hatással az archíválás közben a teljesítményre.
    • Hátrányok: Több konfigurációt és tároláskezelést igényel a WAL fájlok számára.

    A postgresql.conf konfigurációs példája:

    # WAL archíválás beállítása
    wal_level = replica      # vagy magasabb, az archíváláshoz szükséges
    archive_mode = on        # Engedélyezi a WAL archíválási módot
    archive_command = 'cp %p /path/to/wal_archive/%f'  # A WAL fájlok másolási parancsa. Cserélje ki a '/path/to/wal_archive/'-t a tárolási helyre.
    

    A pg_basebackup segítségével alapvető mentés készítése:

    # Alapvető mentés létrehozása a '/path/to/base_backup' könyvtárban
    pg_basebackup -D /path/to/base_backup -F t -x -v
    
  3. Fizikai mentések (File-level backup):

    • A PostgreSQL adatfájlok (a PGDATA könyvtár) közvetlen másolása.
    • A PostgreSQL leállítását vagy pillanatkép készítését igényli a fájlrendszerről.
    • Nem alkalmas működő adatbázis mentésére további eszközök nélkül (pl. LVM pillanatkép).
    • Előnyök: Egyszerű megvalósítás kis adatbázisok esetén, ha a szerver leáll.
    • Hátrányok: A szerver leállítását igényli, magas adatkárosodási kockázat működő szerveren másolás közben.

A megbízható és hatékony biztonsági mentési stratégia érdekében, különösen "üzemi" rendszerek esetén, javaslom a pg_basebackup és a folyamatos WAL archíválás kombinációját a PITR biztosítására. Ez lehetővé teszi az adatok minimális veszteséggel történő helyreállítását és a helyreállítási pont kiválasztását. A logikai mentéseket (pg_dump, pg_dumpall) felhasználhatja egyes adatbázisok biztonsági mentésére vagy adatok átvitelére, de kevésbé hatékonyak széles körű katasztrófa-helyreállítás (DR) esetén.

Az automatikus mentési folyamatok (pg_dump, pg_basebackup) ütemező, például cron segítségével automatizálhatók, de maga a mentési folyamat belső PostgreSQL parancsokkal fog végrehajtódni.