PostgreSQL - Folyamatos archiválás

A RoolWikiBÓL

(Változatok közti eltérés)
2007. szeptember 11., 09:30 változat (szerkesztés)
212.40.118.115 (Vita)

← Előző változtatások
2007. szeptember 11., 13:01 változat (szerkesztés) (undo)
212.40.118.115 (Vita)

Következő változtatások →
5. sor: 5. sor:
-== Engedélyezzük a WAL archiválást ==+=== Engedélyezzük a WAL log archiválást ===
A postgresql.conf fájlban az archive_command változónak kell értéket adni. pl: A postgresql.conf fájlban az archive_command változónak kell értéket adni. pl:
17. sor: 17. sor:
' '
 +(egy sorba kell írni a parancsot!)
Elő lehet írni, hogy ha egy megadott időn belül nem készül wal log fájl, akkor készítse el: Elő lehet írni, hogy ha egy megadott időn belül nem készül wal log fájl, akkor készítse el:
26. sor: 27. sor:
/etc/init.d/postgresql8.2.3 reload /etc/init.d/postgresql8.2.3 reload
 +
 +=== Készíteni kell egy alap mentést ===
 +
 +# működjön a wal logok archiválása!
 +
 +# Be kell lépni a backup módba
 +
 + SELECT pg_start_backup('label');
 +
 +# Fájlrendszer szintű mentést kell készíteni
 +
 + tar cjf data_wal_start.tbz2 data
 +
 +# backup mód vége
 +
 + select pg_stop_backup();
 +
 +Befejezi a backup módot. Kiírja az utolsó wal szegmens számát. Eddig felhasználva a wal szegmenseket (azaz log fájlokat) a stop backuppal azonos állapotú adatbázis jön majd létre.

2007. szeptember 11., 13:01 változat

Ez a folyamatos archiválás teszt és dokumentáció a 23.3. Continuous Archiving and Point-In-Time Recovery (PITR) című postgresql dokumentáció alapján készült.

A cél egy másik számítógépre duplikálni az adatbázist, úgy hogy folyamatosan - a lehető leginkább - naprakész legyen. Ha a fő rendszer bármilyen hiba miatt működésképtelenné válik, akkor ez a helyébe léphet. Ebben a mentett adatbázisban nem engedélyezzük a módosítást, de a lekérdezést igen. Így akár tehermentesítheti a fő rendszert pl a több hónapot érintő összesítések lekérdezésekor.


Engedélyezzük a WAL log archiválást

A postgresql.conf fájlban az archive_command változónak kell értéket adni. pl:

archive_command = '
  echo %f >> /home/postgres/wal_ahead_log_8.2.3/date 
  && date >> /home/postgres/wal_ahead_log_8.2.3/date 
  && test ! -f /home/postgres/wal_ahead_log_8.2.3/%f 
  && echo copy >> /home/postgres/wal_ahead_log_8.2.3/date 
  && cp %p /home/postgres/wal_ahead_log_8.2.3/%f
'

(egy sorba kell írni a parancsot!) Elő lehet írni, hogy ha egy megadott időn belül nem készül wal log fájl, akkor készítse el:

archive_timeout = 1h

A wal_ahead_log_8.2.3 mappában összegyűlt fájlokat majd egy másik hoszton működő szerver fogja magához másolni, amikor szüksége van rá. Ezt az scp paranccsal teszi. Mivel a másolás a háttérben történik, be kell állítani, hogy az scp ne kérjen jelszót.

Újra kell olvastatni a postgresql-el a konfigurációs fájlokat.

/etc/init.d/postgresql8.2.3 reload

Készíteni kell egy alap mentést

  1. működjön a wal logok archiválása!
  1. Be kell lépni a backup módba
SELECT pg_start_backup('label');
  1. Fájlrendszer szintű mentést kell készíteni
 tar cjf data_wal_start.tbz2 data
  1. backup mód vége
 select pg_stop_backup();

Befejezi a backup módot. Kiírja az utolsó wal szegmens számát. Eddig felhasználva a wal szegmenseket (azaz log fájlokat) a stop backuppal azonos állapotú adatbázis jön majd létre.

Személyes eszközök