PostgreSQL - Folyamatos archiválás

A RoolWikiBÓL

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

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

Következő változtatások →
3. sor: 3. sor:
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. 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. 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 === === Engedélyezzük a WAL log archiválást ===
30. sor: 29. sor:
=== Készíteni kell egy alap mentést === === Készíteni kell egy alap mentést ===
-# működjön a wal logok archiválása!+* Működjön a wal logok archiválása!
-# Be kell lépni a backup módba+* Be kell lépni a backup módba.
- SELECT pg_start_backup('label');+ select pg_start_backup('label');
-# Fájlrendszer szintű mentést kell készíteni+* Fájlrendszer szintű mentést kell készíteni
tar cjf data_wal_start.tbz2 data tar cjf data_wal_start.tbz2 data
-# backup mód vége+* backup mód vége
select pg_stop_backup(); 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. 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.
 +
 +=== Létrehozzuk a backup adatbázist ===
 +
 +* PostgreSQL telepítése a backup gépre. (Ugyanaz a verzió legyen mint a forrás rendszeren!)
 +* A data_wal_start.tbz2 kicsomagolása
 +** Töröljük a pg_log tartalmát
 +** Töröljük a serverlog, postgresql.pid fájlt!
 +** Szerkesszük át a postgresql.conf fáljt: ne legyen bekapcsolva a wal archiválás!
 + archive_command = ''
 + archive_timeout = 0
 +
 +* A data mappában létre kell hozni egy recovery.conf állományt. Ez tartalmazza a rendszer visszaállítást vezérlő paramétereket. Nekünk most a következő kell:
 +
 + restore_command = 'scp 192.168.1.13:/home/postgres/wal_ahead_log_8.2.3/%f %p'
 +
 +* Indítsuk el a szervert!

2007. szeptember 11., 13:23 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

  • 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.

Létrehozzuk a backup adatbázist

  • PostgreSQL telepítése a backup gépre. (Ugyanaz a verzió legyen mint a forrás rendszeren!)
  • A data_wal_start.tbz2 kicsomagolása
    • Töröljük a pg_log tartalmát
    • Töröljük a serverlog, postgresql.pid fájlt!
    • Szerkesszük át a postgresql.conf fáljt: ne legyen bekapcsolva a wal archiválás!
archive_command = 
archive_timeout = 0
  • A data mappában létre kell hozni egy recovery.conf állományt. Ez tartalmazza a rendszer visszaállítást vezérlő paramétereket. Nekünk most a következő kell:
restore_command = 'scp 192.168.1.13:/home/postgres/wal_ahead_log_8.2.3/%f %p'
  • Indítsuk el a szervert!
Személyes eszközök