Weboldal keresés

Hogyan készítsünk biztonsági másolatot és állítsunk vissza egy PostgreSQL adatbázist


Éles környezetben, függetlenül attól, hogy mekkora vagy kicsi a PostgreSQL adatbázisa, a rendszeres biztonsági mentés az adatbázis-kezelés elengedhetetlen része. Ebből a cikkből megtudhatja, hogyan készíthet biztonsági másolatot és állíthat vissza egy PostgreSQL-adatbázist.

Feltételezzük, hogy már rendelkezik a PostgreSQL adatbázisrendszer működő telepítésével. Ha nem, olvassa el a következő cikkeinket a PostgreSQL telepítéséhez Linux-disztribúciójára.

Kezdjük el…

Egyetlen PostgreSQL-adatbázis biztonsági mentése

A PostgreSQL biztosítja a pg_dump segédprogramot, amely segít az adatbázisok biztonsági mentésében. Adatbázisfájlt hoz létre SQL parancsokkal olyan formátumban, amely a jövőben könnyen visszaállítható.

Egy PostgreSQL adatbázis biztonsági mentéséhez először jelentkezzen be az adatbázis-kiszolgálóra, majd váltson a Postgres felhasználói fiókra, és futtassa a pg_dump fájlt az alábbiak szerint. (cserélje ki a tecmintdb elemet a biztonsági másolatot készíteni kívánt adatbázis nevére). Alapértelmezés szerint a kimeneti formátum egy egyszerű szöveges SQL-parancsfájl.

pg_dump tecmintdb > tecmintdb.sql

A pg_dump más kimeneti formátumokat is támogat. A kimeneti formátumot a -F kapcsolóval adhatja meg, ahol a c egyéni formátumú archív fájlt, a d könyvtárformátumú archívumot és a A >t tar formátumú archív fájlt jelent: minden formátum alkalmas a pg_restore fájlba való bevitelre.

Például:

pg_dump -F c tecmintdb > tecmintdb.dump
OR
pg_dump -F t tecmintdb > tecmintdb.tar

Ha a kimenetet a könyvtár kimeneti formátumában szeretné kiírni, használja a -f jelzőt (amely a kimeneti fájl megadására szolgál), hogy a fájl helyett a célkönyvtárat adja meg. A pg_dump által létrehozandó könyvtár nem létezhet.

pg_dump -F d tecmintdb -f tecmintdumpdir	

Az összes PostgreSQL adatbázis biztonsági mentéséhez használja a pg_dumpall eszközt az ábra szerint.

pg_dumpall > all_pg_dbs.sql

A képen látható módon visszaállíthatja a kiíratást a psql használatával.

psql -f all_pg_dbs.sql postgres

PostgreSQL adatbázis visszaállítása

A PostgreSQL adatbázis visszaállításához használhatja a psql vagy a pg_restore segédprogramokat. A psqlpg_dump által létrehozott szövegfájlok visszaállítására szolgál, míg a pg_restore a PostgreSQL adatbázis visszaállítására szolgál a pg_dump< által létrehozott archívumból. a nem egyszerű szöveges formátumok egyikében (egyéni, tar vagy könyvtár).

Íme egy példa az egyszerű szöveges fájl kiíratásának visszaállítására:

psql tecmintdb < tecmintdb.sql

Ahogy fentebb említettük, az egyéni formátumú kiíratások nem a psql szkriptjei, ezért vissza kell állítani a pg_restore paranccsal az ábrán látható módon.

pg_restore -d tecmintdb tecmintdb.dump
OR
pg_restore -d tecmintdb tecmintdb.tar
OR
pg_restore -d tecmintdb tecmintdumpdir	

Tömörített PostgreSQL adatbázis biztonsági mentés

Ha az adatbázis, amelyről biztonsági másolatot készít, nagy, és egy meglehetősen kisebb kimeneti fájlt szeretne létrehozni, akkor futtathat egy tömörített kiíratást, ahol szűrnie kell a pg_dump kimenetét egy tömörítő eszközzel, például a gzip segítségével. vagy bármelyik kedvenced:

pg_dump tecmintdb | gzip > tecmintdb.gz

Ha az adatbázis rendkívül nagy, akkor párhuzamosan is kiírhatja a feladatok_száma táblákat a -j jelző használatával, az ábrán látható módon.

pg_dump -F d -j 5 -f tecmintdumpdir

Fontos megjegyezni, hogy a párhuzamos dump opció csökkenti a dump idejét, de másrészt növeli az adatbázis-kiszolgáló terhelését is.

Távoli PostgreSQL adatbázisok biztonsági mentése

A pg_dump egy szokásos PostgreSQL-kliens eszköz, amely támogatja a távoli adatbázis-kiszolgálókon végzett műveleteket. A pg_dump távoli adatbázis-kiszolgáló megadásához használja a -h parancssori paramétereket a távoli gazdagép megadásához, a -p pedig a távoli kiszolgálót adja meg. port, amelyre az adatbázis-kiszolgáló figyel. Ezenkívül használja a -U kapcsolót a csatlakozáshoz használt adatbázis-szerepnév megadásához.

Ne felejtse el lecserélni a 10.10.20.10 és az 5432 és a tecmintdb jelet a távoli gazdagép IP-címére vagy gazdagépnevére, adatbázis-portjára és adatbázisnevére.

pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb > tecmintdb.sql

Győződjön meg arról, hogy a távolról csatlakozó felhasználó rendelkezik az adatbázis eléréséhez szükséges jogosultságokkal, és a megfelelő adatbázis-hitelesítési módszer be van állítva az adatbázis-kiszolgálón, ellenkező esetben a következő képernyőképen láthatóhoz hasonló hibaüzenetet kap.

Lehetőség van arra is, hogy egy adatbázist közvetlenül egyik szerverről a másikra írjon ki, használja a pg_dump és a psql segédprogramokat az ábrán látható módon.

pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb

PostgreSQL-adatbázis automatikus biztonsági mentése Cron-feladat segítségével

Rendszeres időközönként biztonsági mentéseket készíthet a cron jobok használatával. A Cron jobok gyakran használt eszközök különféle feladatok ütemezésére a szerveren való futtatásra.

A következőképpen konfigurálhat egy cron feladatot a PostgreSQL adatbázis biztonsági mentésének automatizálására. Vegye figyelembe, hogy a következő parancsokat kell futtatnia PostgreSQL szuperfelhasználóként:

mkdir -p /srv/backups/databases

Ezután futtassa a következő parancsot a crontab szerkesztéséhez egy új cron feladat hozzáadásához.

crontab -e

Másolja ki és illessze be a következő sort a crontab végére. A fent ismertetett kiíratási formátumok bármelyikét használhatja.

0 0 * * *  pg_dump  -U postgres tecmintdb > /srv/backups/postgres/tecmintdb.sql

Mentse el a fájlt és lépjen ki.

A cron szolgáltatás újraindítás nélkül automatikusan elindítja az új feladat futtatását. És ez a cron job minden nap éjfélkor fog futni, ez egy minimális megoldás a mentési feladatra.

A cron-feladatok ütemezésével kapcsolatos további információkért lásd: Cron-feladatok létrehozása és kezelése Linuxon

Egyelőre ennyi! Célszerű az adatok biztonsági mentését az adatbázis-kezelési rutin részévé tenni. Ha kérdése vagy észrevétele van, használja az alábbi visszajelzési űrlapot. További információkért tekintse meg a pg_dump és pg_restore hivatkozási oldalakat.